批量更新DevExpress GridView中的列

时间:2013-03-29 23:03:17

标签: devexpress

我已经阅读了有关此主题的在线阅读内容,并且所提出的解决方案均无效。

我的情况非常简单......

我有一个加载数据的网格....

加载网格后,用户可以编辑特定列并更改字段的值(请参阅下面的代码段):请注意,在网格数据绑定后,我检查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;

我怎样才能完成这个明显的简单问题???

1 个答案:

答案 0 :(得分:0)

不确定为什么你这样做,但你可以尝试将它们放在一个列表中。

List<int> ids = new List<int>();
for (int i = 0; i < updateItemsGridView.VisibleRowCount; i++)
{
     ids.Add(Convert.ToInt32(updateItemsGridView.GetRowValues(i, "Charge")));
}