Savi kolla Ответов: 1

Я пытаюсь написать datagrid в VB.NET-да. Я не вижу стола. У меня есть вызывающий оператор в основной программе и вызывающая функция как:


Я пытаюсь написать datagrid в VB.NET-да. Я не вижу стола. У меня есть вызывающий оператор в основной программе и вызывающая функция как:

Что я уже пробовал:

 If results.Rows.Count > 1 Then
                Call GridView1_SelectedIndexChanged(_DogID, _Name, _OwnerID)
            End If



Protected Sub GridView1_SelectedIndexChanged(Id As Integer, Name As String, Owner As Integer)
        
        Dim dogTags As New DataTable()       
        dogTags.Rows.Add(_DogID, _Name, _OwnerID)
        GridView1.DataSource = dogTags       
        GridView1.DataBind()

    End Sub

1 Ответов

Рейтинг:
0

Maciej Los

Причина очевидна: вы уничтожаете предыдущие данные каждый раз, когда вызываете процедуру GridView1_SelectedIndexChanged.

Переместите эту линию Dim dogTags As New DataTable() вне процедуры (например: после InitializeComponent метод).
Затем измените свою процедуру следующим образом:

'Dim dogTags As New DataTable()       

Protected Sub GridView1_SelectedIndexChanged(Id As Integer, Name As String, Owner As Integer)
        
        Dim dt As DataTable = DirectCast(GridView1.DataSource, DataTable)
        Dim row As DataRow = dt.NewRow()
        'do not forget to change column names respectively to their names in your project!
        row("DogId") = Id
        row("Name") = Name
        row("Owner") = Owner
        dogTags.Rows.Add(row)
        GridView1.DataSource = dogTags       
End Sub


Тем временем. пожалуйста, прочтите это:
Область действия в Visual Basic | Microsoft Docs[^]
Область действия переменных и методов в Microsoft .NET[^]
Как управлять областью действия переменной (Visual Basic) | Microsoft Docs[^]
Оператор DirectCast (Visual Basic) | Microsoft Docs[^]
Как добавить строки в таблицу данных[^]