【问题标题】:Updating DataTable bound to ASP.Net DataGrid更新绑定到 ASP.Net DataGrid 的 DataTable
【发布时间】:2010-09-09 18:05:28
【问题描述】:

我在更新绑定到数据网格的数据表时遇到问题。尝试了很多方法,但问题是每次您单击命令时,底层数据表都会恢复到初始状态。

示例代码如下:

在标签上点击:

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”数据)。

【问题讨论】:

    标签: c# asp.net datagrid datatable


    【解决方案1】:

    这条线通常不适合我

    DataTable dt = DataGridUsers.DataSource as DataTable;
    

    您可能希望改为在会话中管理 DataSource,方法是从会话中检索它并进行修改,然后将其重新绑定到 Grid。

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

    【讨论】:

    • AH.... 我是一个 ASP.Net 菜鸟,正在从 Web 服务调用获取 PageLoad 上的数据表。没有意识到当我更新表格时它会重新加载页面,添加并从会话类型交易中加载 If (IsPostBack) 并且效果很好。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2013-07-28
    • 2012-11-22
    • 2018-02-07
    • 2013-06-20
    相关资源
    最近更新 更多