批量更新DevExpress GridView中的列

批量更新DevExpress GridView中的列,devexpress,Devexpress,我已经阅读了所有关于这个主题的在线阅读内容,但是没有一个建议的解决方案是有效的 我的情况很简单 我有一个加载数据的网格 加载网格后,用户可以编辑特定列并更改字段的值(请参见下面的代码片段):请注意,网格数据绑定后,我检查VisibleRowCount属性并获得1057行 <dx:GridViewDataTextColumn Caption="Charge" FieldName="Charge" Width="100px" CellStyle-HorizontalAlign="Right"

我已经阅读了所有关于这个主题的在线阅读内容,但是没有一个建议的解决方案是有效的

我的情况很简单

我有一个加载数据的网格

加载网格后,用户可以编辑特定列并更改字段的值(请参见下面的代码片段):请注意,网格数据绑定后,我检查VisibleRowCount属性并获得1057行

<dx:GridViewDataTextColumn Caption="Charge" FieldName="Charge" Width="100px" CellStyle-HorizontalAlign="Right" PropertiesTextEdit-DisplayFormatString="{0:c2}" VisibleIndex="4">
 <DataItemTemplate>
 <dx:ASPxTextBox ID="ASPxCharge" runat="server" Width="75px" Text='<%# Eval("Charge") %>'>
 </dx:ASPxTextBox>
 </DataItemTemplate>
 </dx:GridViewDataTextColumn>

此时,在表单上单击一个按钮以执行代码隐藏方法,我希望使用该方法执行以下操作: 我只需要一种方法来逐个遍历网格上的所有行,并更新数据库中修改后的值。 请注意,我可以考虑是否修改了该值。 我所需要的只是访问行和特定列以获得修改后的值

我尝试在代码隐藏方法中使用VisibleRowCount属性,但该值的计算结果为0。显然,回发后,VisibleRowCount属性被设置回0,因此我无法循环遍历网格集合。我尝试在ViewState中保存该值,但VisibleRowCount属性显然是只读的

int visibleRowCount = Utility.GetValue<int>(ViewState["VisibleRowCount"]);
                    for (int i = 0; i < visibleRowCount; i++)
                    {
                        DataRow aspxDataRow = updateItemsGridView.GetDataRow(i);

                        Array arr = aspxDataRow.ItemArray;
int visibleRowCount=Utility.GetValue(ViewState[“visibleRowCount”]);
对于(int i=0;i
我如何才能完成这个看似简单的问题


不知道你为什么这样做,但你可以试着把它们列在一个列表中

List<int> ids = new List<int>();
for (int i = 0; i < updateItemsGridView.VisibleRowCount; i++)
{
     ids.Add(Convert.ToInt32(updateItemsGridView.GetRowValues(i, "Charge")));
}
List id=new List();
对于(int i=0;i
这仍然无关紧要,因为回发时VisibleRowCount被设置为0。回发后,我必须访问网格上的某种属性,以便在行集合中循环。奇怪的是,因为我在工作场所的生产中使用了上述代码,即使回发后也可以正常工作。