Как узнать значения полей текущей записи в DataTable?
Собственно, есть DataTable, там 2 поля ID и текстовое. На гриде, основоном на этом поле отображается только текстовое поле. Щелкая по гриду, я должен знать значение поля ID текущей записи. Как это узнать?
Я могу узнать номер текущей строки в гриде и взять по этому номеру ID из DataTable, но если, например, какие-либо записи были удалены, то все смещается, т.е. в гриде этих строк уже нет, а в DataTable они помечены, как удаленные.
Public Function GetCurrentRow(ByVal Grid As DataGrid) As DataRow
' Получаем связного и приводим его к его же типу
Dim cm As CurrencyManager = CType(Grid.BindingContext(Grid.DataSource, Grid.DataMember), CurrencyManager)
' Получаем перекрышку текущего ряда
Dim drv As DataRowView = CType(cm.Current, DataRowView)
' Наконец, из перекрышки высасываем САМ РЯД
Return drv.Row
End Function
Public Function GetRow(ByVal Grid As DataGrid, ByVal ID As Integer) As DataRow
' Получаем связного и приводим его к его же типу
Dim cm As CurrencyManager = CType(Grid.BindingContext(Grid.DataSource, Grid.DataMember), CurrencyManager)
' Получаем вид данных нашего грида
Dim dv As DataView = CType(cm.List, DataView)
' Из него берем перекрытое представление ряда по ПЕРЕКРЫТОМУ ЖЕ номеру
Dim drv As DataRowView = dv(ID)
' Наконец, из перекрышки высасываем САМ РЯД
Return drv.Row
End Function
Функция GetCurrentRow возвращает текущую запись Grid'а, указанного в
параметре. А функция GetRow возвращает запись из грида по номеру
записи.