Member 12477066 Ответов: 0

Как я могу получить значение ячейки из нескольких созданных dynaamic datagridview в VB.NET


Пожалуйста мне нужна ваша помощь в этом вопросе:

В VB.NET, у меня есть форма с панелью. Эта панель заполняется несколькими элементами управления datagridview с прагматичным кодом во время выполнения. Каждый элемент получает данные из моей базы данных MS SQL-кода.----Мне удалось успешно достичь. Моя проблема заключается в том, как получить значение ячейки любого из datagridview в событии DoubleClick.

Я потратил три дня, пытаясь понять это, и искал в интернете, но безрезультатно. Любая помощь будет оценена по достоинству.

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

'''My Load Event Code which creates all database controls , fetches data from the datagridview and arranges them in the panel:


 Dim Dayz As Int32 = 30

        For i As Int32 = 1 To Dayz
            Dim datagridview1 As New DataGridView()
            datagridview1.Name = i.ToString()

            AddHandler datagridview1.CellDoubleClick, AddressOf CellDoubleClick

            Dim col As New DataGridViewTextBoxColumn
            col.HeaderText = i.ToString()
            datagridview1.Columns.Add(col)
            datagridview1.AutoGenerateColumns = False

            'gets data from SQL
            SQL.RunQuery("SELECT Subject FROM Appointments WHERE Day = '" & i.ToString() & "'AND Year = '" & textBoxYear.Text & "'AND Month = '" & lbl_Month.Text & "' AND Owner = '" & MainInterface.cbo_Users.Text & "'")
            If SQL.SQLDataset.Tables.Count > 0 Then
                For Each R As DataRow In SQL.SQLDataset.Tables(0).Rows
                    datagridview1.DataSource = SQL.SQLDataset.Tables(0)
                    For k As Integer = 0 To datagridview1.Columns.Count - 1
                        datagridview1.Columns(k).DataPropertyName = "Subject"
                    Next
                Next
            End If

            'arranges all datagridview in the panel
            datagridview1.SetBounds(x, y, 151, 107)
            x += 153
            If ndayz = 7 Then
                x = 0
                ndayz = 0
                y += 109
            End If
            Panel1.Controls.Add(datagridview1)
        Next
'' I do not have any issue with the above code. However in the doubleclick event, I get an Index out of range exception:

 Private Sub CellDoubleClick(sender As System.Object, e As DataGridViewCellEventArgs)

           Msgbox (datagridview1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value)
'''' I get an index out of range exception on this line.

 End Sub

Maciej Los

Ваш код уязвим для SQL-инъекций!

Richard MacCutchan

Какой индекс находится вне диапазона и почему?

0 Ответов