在vb.net或c#中,DataGridViews有一种内置方法,即使在对行进行排序后也总是将一行分配给一个id。
使用
For Each row In DataGridView1.Rows
debug.writeline(row.cells(0).value)
Next
受行当前位置的影响,而不是它们被添加的位置。
我知道你可以添加一个隐藏的id列,并在每次添加行时递增它,但我不知道是否有内置的方法来执行此操作。
修改的
我有一个填充数据网格视图的值列表,然后可以编辑网格视图,编辑后,需要更新值列表。因此,如果你有一行说“丰田”,“黄色”,你把它改为“丰田”,“红色”id要求“丰田”,“黄色”指数成为“丰田”,“红色”
基本上是一个sql表但是在list(of string())中。
答案 0 :(得分:0)
(可能)在未绑定的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());
}
}
原 KEY1:41014879 KEY2:3888474 KEY3:25209742 :26966483
排序 KEY3:25209742 KEY2:3888474 KEY1:41014879 :26966483
编辑 KEY3:25209742 KEY2:3888474 KEY1:41014879 :26966483
除去 KEY3:25209742 KEY1:41014879 :26966483
添加 KEY3:25209742 KEY1:41014879 KEY4:31884011 :26966483