我在更新绑定到数据网格的数据表时遇到问题。尝试了一堆方法,但问题是每次点击命令时,基础数据表都会恢复到初始状态。
以下是示例代码:
在标签上点击:
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”数据)。
答案 0 :(得分:0)
此行通常对我不起作用
DataTable dt = DataGridUsers.DataSource as DataTable;
您可能希望在会话中管理DataSource,方法是从会话中检索它,然后将其重新绑定到网格。
您可能还想看看DataSource第一次绑定到网格的位置。它是否在回发上运行,从而覆盖您的更改。