Получить позицию BindingSource на основе строки DataTable

У меня есть таблица данных, содержащая строки таблицы базы данных. Эта таблица имеет первичный ключ, образованный двумя столбцами.

Компоненты назначаются таким образом: datatable -> bindingsource -> datagridview. Я хочу найти определенную строку (на основе первичного ключа), чтобы выбрать ее в сетке. Я не могу использовать метод bindingsource.Find, потому что вы можете использовать только один столбец.

У меня есть доступ к таблице данных, поэтому я вручную выполняю поиск в таблице данных, но как я могу получить позицию строки источника привязки на основе строки данных? Или есть другой способ решить это?

Я использую Visual Studio 2005, VB.NET.


person Ronald    schedule 30.08.2010    source источник
comment
Я думаю, что у этого парня было такое же требование: bytes.com/topic/visual-basic-net/answers/   -  person Tim Schmelter    schedule 30.08.2010
comment
Создайте метод расширения для источника привязки. Работает как шарм   -  person Martin    schedule 07.11.2011


Ответы (2)


Я пытаюсь добавить ответ на этот двухлетний вопрос. Один из способов решить эту проблему — добавить этот код после метода UpdateAll (из SaveItem_Click):

Me.YourDataSet.Tables("YourTable").Rows(YourBindingSource.Position).Item("YourColumn") = "YourNewValue"

Затем вызовите другой метод UpdateAll.

person Arman    schedule 18.05.2013

Ну, я заканчиваю итерацию, используя bindingsource.List и bindingsource.Item. Я не знал, но эти свойства содержат данные таблицы данных, применяющие фильтр и сортировку.

Dim value1 As String = "Juan"
Dim value2 As String = "Perez"
For i As Integer = 0 To bsData.Count - 1
    Dim row As DataRowView = bsData.Item(i)
    If row("Column1") = value1 AndAlso row("Column2") = value2 Then
        bsData.Position = i
        Return
    End If
Next
person Ronald    schedule 30.08.2010