Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.16.46.131] |
|
Сообщ.
#1
,
|
|
|
Добрый день.
Подскажите как можно найти строку в DataTable после применения DataTable.DefaultView.RowFilter ? Объясню подробнее. Если в таблице искать по ключевому полю значение с помощью: DataRow row = table.Rows.Find("OurKey"); int rowIndex = table.Rows.IndexOf(row); То мы получаем строку, в которой есть искомое значение "OurKey". С этим все понятно. Далее применяем определенный фильтр, чтобы отсеять ненужные записи: table.DefaultView.RowFilter = "TestField>10"; Теперь в связанном с DataTable гриде отобразятся только нужные записи. Вопрос в том, как теперь найти порядковый номер требуемой записи, чтобы можно было его выделить в датагриде? Поиск по ключевому полю int rowIndex = table.Rows.IndexOf(row); отдает индекс строки исходной таблицы, а не отфильтрованной. Как найти порядковый номер строки уже ПОСЛЕ применения фильтра? |
Сообщ.
#2
,
|
|
|
Вроде как нашел решение.
У меня ключевое поле в первом столбце, по нему же таблица и отсортирована. Таким способом получается найти индекс нужной строки в отфильтрованной таблице и выделить искомую строку: DataView custView = table.DefaultView; // Сортировка по первому полю таблицы custView.Sort = custView.Table.Columns[0].ColumnName; // Определяем индекс искомой строки int rowIndex = custView.Find("FindThisValue"); if (rowIndex > -1) { testDataGridView.CurrentCell = testDataGridView[0, rowIndex]; } |