更新绑定到ASP.Net DataGrid的DataTable

时间:2010-09-09 18:05:28

标签: c# asp.net datagrid datatable

我在更新绑定到数据网格的数据表时遇到问题。尝试了一堆方法,但问题是每次点击命令时,基础数据表都会恢复到初始状态

以下是示例代码:

在标签上点击:

protected void OnUserDataGridCommand(object source, DataGridCommandEventArgs e)
        {
            DataTable dt = DataGridUsers.DataSource as DataTable;

            if (e.CommandName == "Lock Out")
            {
                // Approach 1
                e.Item.Cells[0].Text = "Lock";
                DataGridUsers.DataSource = dt;
                DataGridUsers.DataBind();

                // Approach 2              
                dt.Rows[e.Item.ItemIndex]["FirstName"] = "LOCK";
                dt.Rows[e.Item.ItemIndex].AcceptChanges();

                DataGridUsers.DataSource = dt;
                DataGridUsers.DataBind();                
            }
        }

因此,这将更新行的第一个名称以表示Lock,但是当您单击另一行时,先前的Locked将恢复为第一个名称。当我断点而不管显示锁的行时,数据表总是初始数据(没有“LOCK”数据)。

1 个答案:

答案 0 :(得分:0)

此行通常对我不起作用

DataTable dt = DataGridUsers.DataSource as DataTable;

您可能希望在会话中管理DataSource,方法是从会话中检索它,然后将其重新绑定到网格。

您可能还想看看DataSource第一次绑定到网格的位置。它是否在回发上运行,从而覆盖您的更改。