0

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

我的情况很简单...

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

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

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

​</p>

4

1 回答 1

0

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

List<int> ids = new List<int>();
for (int i = 0; i < updateItemsGridView.VisibleRowCount; i++)
{
     ids.Add(Convert.ToInt32(updateItemsGridView.GetRowValues(i, "Charge")));
}
于 2013-03-29T23:46:12.620 回答