【问题标题】:After editing detail record, wrong record is selected in gridview编辑详细记录后,在gridview中选择了错误的记录
【发布时间】:2016-03-31 16:08:31
【问题描述】:

我有一个显示多条记录的 GridView。单击说第三条记录,在下面显示一个详细信息视图,我可以在其中编辑记录。如果我对记录进行更改并保存,GridView 会刷新并使用,现在我编辑的记录是第 5 行。但是,第 3 行仍处于选中状态,DetailsView 现在显示的记录与我刚刚编辑的记录不同。

通过 DetailsView 更新后,如何确保在 GridView 中重新选择该记录,无论它现在在 GridView 排序顺序中的哪个位置?

【问题讨论】:

    标签: asp.net gridview detailsview


    【解决方案1】:

    您可以通过将字段添加到 GridView 的 DataKeyNames 来跟踪每一行的 ID。在代码隐藏中刷新网格之前,请记住所选行的 ID(这里假设相关 ID 是一个名为 ClientID 的字段):

    int savedClientID = (int)gvClients.DataKeys[gvClients.SelectedIndex].Values["ClientID"];
    

    然后可以在绑定数据后查找,选择对应的行:

    void gvClients_DataBound(object sender, EventArgs e)
    {
        gvClients.SelectedIndex = -1;
    
        foreach (GridViewRow row in gvClients.Rows)
        {
            int clientID = (int)gvClients.DataKeys[row.RowIndex].Values["ClientID"];
    
            if (clientID == savedClientID)
            {
                gvClients.SelectedIndex = row.RowIndex;
                break;
            }
        }
    }
    

    更新

    如果在 GridView 中开启了分页,可能需要使用本帖建议的方法:GridView in ASP.Net -- Selecting the correct row

    【讨论】:

    • 我尝试了几乎相同的解决方案,只是循环方式略有不同。只要记录在 GridView 的同一页面上加星和结束,此解决方案和其他解决方案都有效。我在 GridView 中对结果进行了分页。如果编辑的记录从第 5 页转到第 1 页,则选择第 5 页上的记录,而不是现在在第 1 页上的已编辑记录。
    • 我添加了一个可以帮助你的帖子的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2023-03-25
    • 2015-03-18
    • 2014-05-25
    • 2014-05-24
    相关资源
    最近更新 更多