首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >排序行后获取DataGridRow

排序行后获取DataGridRow
EN

Stack Overflow用户
提问于 2017-11-08 17:40:59
回答 1查看 119关注 0票数 0

在vb.net或c#中,即使在对行进行排序之后,DataGridViews也有内置的方式来始终将行分配给id。

使用

代码语言:javascript
复制
For Each row In DataGridView1.Rows
    debug.writeline(row.cells(0).value)
Next

受当前位置的影响,而不受所添加的位置的影响。

我知道您可以在每次添加行时添加一个隐藏的id列并增加它,但是我不知道是否有内置的方式来实现这一点。

编辑

我有一个值列表,用于填充数据网格视图,然后可以编辑网格视图,在编辑之后,需要更新值列表。所以,如果你有一排“丰田”,“黄色”,你把它改为“丰田”,“红色”id想要“丰田”,“黄色”成为“丰田”,“红色”

基本上是一个sql表,但在list( string())形式中。

EN

回答 1

Stack Overflow用户

发布于 2017-11-08 19:12:14

(可能)在未绑定的DataGridView中,很可能可以对每一行使用HashCode作为Id。

代码语言:javascript
复制
        public Form1()
    {
        InitializeComponent();

        dgv.Columns.Add(new DataGridViewTextBoxColumn());
        dgv.Columns.Add(new DataGridViewTextBoxColumn());

        dgv.Rows.Add("key1", "value1");
        dgv.Rows.Add("key2", "value2");
        dgv.Rows.Add("key3", "value3");

        Debug.Print("original");
        dispHash();

        /*sorting*/
        dgv.Sort(dgv.Columns[1], ListSortDirection.Descending);

        Debug.Print("sorted");
        dispHash();

        /*edit*/
        dgv[1, 2].Value = "changed";
        Debug.Print("edited");
        dispHash();

        /*deleted*/
        dgv.Rows.Remove(dgv.Rows[1]);
        Debug.Print("removed");
        dispHash();

        /*add*/
        dgv.Rows.Add("key4", "value4");
        Debug.Print("add");
        dispHash();
    }

    private void dispHash()
    {
        foreach (DataGridViewRow row in dgv.Rows)
        {
            Debug.Print(row.Cells[0].Value + ":" + row.GetHashCode());
        }
    }

原键1:41014879键2:3888474键3:25209742 :26966483

排序键3:25209742键2:3888474键1:41014879 :26966483

编辑密钥3:25209742键2:3888474键1:41014879 :26966483

移除键3:25209742键1:41014879 :26966483

加键3:25209742键1:41014879键4:31884011 :26966483

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47186277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档