加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Asp.Net GridView EditIndex竞争条件?

发布时间:2020-12-16 09:33:52 所属栏目:asp.Net 来源:网络整理
导读:这是一个假设性的问题,让我离开了花园小径…说我有一个我想编辑的网格视图…给定一个绑定数据的方法.. private void BindGridFirst() { var data = new Liststring() { "A","B","C","D","E","F" }; gridView.DataSource = data; gridView.DataBind(); } 现在
这是一个假设性的问题,让我离开了花园小径…说我有一个我想编辑的网格视图…给定一个绑定数据的方法..

private void BindGridFirst() {
        var data = new List<string>() {
            "A","B","C","D","E","F"
        };
        gridView.DataSource = data;
        gridView.DataBind();
    }

现在假设我正在查看此页面,另一位用户已经出现并对基础数据进行了一些更改,现在我点击编辑按钮编辑D …

编辑方法非常简单:

protected void RowEdit(object sender,GridViewEditEventArgs e) {
        gridView.EditIndex = e.NewEditIndex;
        BindGridSecond();
    }

编辑:我不得不指出,这种方法几乎用于所有在线示例,包括来自Microsoft的示例.

这个BindGridSecond()方法如下所示:

private void BindGridSecond() {
        var data = new List<string>() {
            "A","AA","F"
        };
        gridView.DataSource = data;
        gridView.DataBind();
    }

它完全一样,但数据现在已经改变了. UI更新后,用户现在处于针对行C的编辑模式.

不是用户期望或想要的.如何处理这种情况以避免这样的问题?

解决方法

就个人而言,我在GridView上使用DataKeyNames属性和SelectedDataKey,这样我就可以轻松获取用户想要的行的主键,而不是依赖于网格的索引.

通过使用主键,您可以将新项目添加到集合中,例如在您的示例中.此外,使用主键可以更轻松地处理网格上的分页,因为您不必考虑页码和索引.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读