在vb.net或c#中,即使在对行进行排序之后,DataGridViews也有内置的方式来始终将行分配给id。
使用
For Each row In DataGridView1.Rows
debug.writeline(row.cells(0).value)
Next受当前位置的影响,而不受所添加的位置的影响。
我知道您可以在每次添加行时添加一个隐藏的id列并增加它,但是我不知道是否有内置的方式来实现这一点。
编辑
我有一个值列表,用于填充数据网格视图,然后可以编辑网格视图,在编辑之后,需要更新值列表。所以,如果你有一排“丰田”,“黄色”,你把它改为“丰田”,“红色”id想要“丰田”,“黄色”成为“丰田”,“红色”
基本上是一个sql表,但在list( string())形式中。
发布于 2017-11-08 19:12:14
(可能)在未绑定的DataGridView中,很可能可以对每一行使用HashCode作为Id。
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
https://stackoverflow.com/questions/47186277
复制相似问题