Один способ, которым я достиг чего-то похожего в прошлом, - это использование свойства id моих объектов, связанных со списком.
Например, если у меня есть BindingList<User>
, где пользователь что-то вроде:
public class Names
{
public string Name { get; set; }
public int id { get; set; }
}
Затем я могу связать свой список следующим образом:
dataGridView1.AutoGenerateColumns = false;
_users = new BindingList<User>();
_users .Add(new Names() { Name = "joe", id=1 });
_users .Add(new Names() { Name = "pete", id = 2 });
bindingSource1.DataSource = _names;
DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn();
col1.DataPropertyName = "Name";
dataGridView1.Columns.Add(col1);
dataGridView1.DataSource = _users;
Затем, когда DataGridView предоставляет новую строку, он будет иметь идентификатор 0 (значение по умолчанию для целого числа).
Каждый объект, поступающий из базы данных, имеет ненулевой идентификатор.
Может также быть способ достичь этого с помощью BindingSources, но я быстро осмотрел свойства и ничего не выпрыгнуло на меня.