Вопрос: DataView и номера строк после фильтра.

EvgenyV
Дата: 20.02.2005 21:27:31
Привет, народ!
Столкнулся с такой вот проблемкой:
есть DataSet. В нем несколько строк,
а именно:
1 строка - id - 100, name - "aaaa"
2 - id - 101, name - "bbbb"
3 - id - 102, name - "bbbb"
4 - id - 103, name - "cccc"
Создаю
DataView dvTest = new DataView(m_Data.Tables[0]);
dvTest.RowFilter = "name = 'bbbb'";

Результат: отфильтрованный с двумя строчками DataView.
Вопрос: как узнать порядковые номера строк результата относительно "родительского" DataSet. В данном примере - это 2 и 3.

Причем во время отладки вижу dvTest.dvListener.index.records - массив индексов, который содержит как раз то, что мне надо! Но dvTest.dvListener - внутренний protected объект, недоступный извне!

Есть идеи?

Заранее спасибо
кузя
Дата: 20.02.2005 21:57:13
можно скопировать все строки DataTable в массив и у этого массива по IndexOf получить индекс строки в таблице.

DataRow[] rs=new DataRow[m_Data.Tables[0].Rows.Count];
m_Data.Tables[0].Rows.CopyTo(rs, 0);
// получить индекс записи в DataTable,
// например, для 0-й записи из DataView
int indx=Array.IndexOf(rs, dvTest[0].Row); 

или пробежаться в цикле по всем строкам в таблице, в поиске нужной :)
EvgenyV
Дата: 21.02.2005 10:53:30
Спасибо!
CrazyPotato
Дата: 18.12.2006 02:53:53
кузя
можно скопировать все строки DataTable в массив и у этого массива по IndexOf получить индекс строки в таблице.


Зачем извращаться? Есть стандартные средства: по данному объекту DataRowView (запись в представлении, DataView) можно определить соответствующий ему объект DataRow (запись в таблице, DataTable) следующим образом:

SomeDataRowView.Row.

Вот и всё.