【问题标题】:Batch Updating a column in the DevExpress GridView批量更新 DevExpress GridView 中的列
【发布时间】:2013-03-29 23:03:16
【问题描述】:

我已阅读有关此主题的所有在线阅读内容,但建议的解决方案均无效。

我的情况很简单……

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

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

我怎样才能完成这个看似简单的问题???

【问题讨论】:

    标签: devexpress


    【解决方案1】:

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

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

    【讨论】:

    • 这仍然无关紧要,因为 VisibleRowCount 在回发时设置回 0。网格上必须有某种属性,我可以访问以在回发后循环遍历行集合。
    • 奇怪,因为我在工作场所的生产环境中使用上述相同的代码,即使在回发后也能正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2014-12-06
    • 2014-04-07
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多