Соответствие Index DataTbale и dataGridView (winforms)
в продолжении темы C# datagrid/datatable вернуться на определенную запись Где я получил ответ и все работает. Но есть нюанс если таблица в dataGridView отфильтрована
Есть Таблица которая загружена в dataGridView в таблице например 10 записей.
Но в dataGridView фильтром я показываю только 5 из них. Пример фильтра
DataView dv;
dv = new DataView(DS.Tables["Orders"], "Type = 2 ", "Type Desc", DataViewRowState.CurrentRows);
dataGridView1.DataSource = dv;
Мне нужно работать с одной определенной записью. Я знаю ее индекс в таблице. Но ее индекс в dataGridView другой. Узнать даблкликом оригинальный индекс таблицы я могу так
var r = ((DataRowView)BindingContext[dataGridView1.DataSource].Current).Row;
var index = r.Table.Rows.IndexOf(r);
MessageBox.Show($"{index}");
Мне нужно наоборот. Зная индекс в Таблице узнать какой он в dataGridView чтобы позиционировать на него курсор методом
dataGridView1.CurrentCell = ???
Спасибо.
Ответы (1 шт):
Находите нужный tableRow в таблице по индексу
Находите index его в DataGridView
DataGridViewRow row = dgv.Rows .Cast<DataGridViewRow>() .Where(r => r.Cells["ID"].Value.ToString().Equals(tableRow["ID"].ToString())) .First(); rowIndex = row.Index;