2015-05-27 2 views
0

У меня есть datagridview с 4 столбцами [Nam], [ID], [Shuru], [Payan] второй столбец ([ID]) скрыт и используется для сбора некоторых подробности о данных. это код нагрузки:Datagridview не выбирает первую строку после заполнения данных datasource

Private Sub SalMali_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Me.DGV_SalMaliTableAdapter.Fill(Me.FDBDataSet.DGV_SalMali) 
End Sub 

, который извлекает все в DGV_SalMali таблице. Я знаю, что datagridview автоматически выбирает первую строку после заполнения, поэтому я помещаю функцию в Change Selection для извлечения данных. вот код:

Private Sub DGV_SalMaliDataGridView_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DGV_SalMaliDataGridView.SelectionChanged 
     refreshDT() 
    End Sub 
Public Sub refreshDT() 
     Dim cnt As Integer = DGV_SalMaliDataGridView.Rows.Count 
     If cnt = 0 Then 
      GoTo line 
     End If 

     unlockAll() 

     Dim sel As String = DGV_SalMaliDataGridView.SelectedRows(0).Cells(1).Value 

     Dim dt As New DataTable 
     dt = SalMaliTA.GetData_SalMali_B_ID(sel) 
     Dim dtr As DataRow = dt.Rows(0) 

     TextBox1.Text = dtr.Item(4) 
     MaskedTextBox1.Text = mc.MtoS(dtr.Item(1)) 
     MaskedTextBox2.Text = mc.MtoS(dtr.Item(2)) 
     CheckBox1.Checked = dtr.Item(3) 

     Exit Sub 
line: 
     lockAll() 
    End Sub 

, но когда я называю refreshDT() выбор больше не работает. он выдает ошибку на линии 8 refreshDT()

sub { exactly here : Dim sel As String = DGV_SalMaliDataGridView.SelectedRows(0).Cells(1).Value }

Брошенный: «Индекс был вне диапазона Должно быть неотрицательным и меньше, чем размер коллекции.» (System.ArgumentOutOfRangeException) Исключение Message = "Index был вне диапазона. Должно быть неотрицательным и меньше, чем размер коллекции.", Exception Type = "System.ArgumentOutOfRangeException"

DataGridView имеет строк, и я не знаю, в чем проблема. спасибо за помощь.

ответ

0

вы в настоящее время проверки, если есть какая-либо строка, но не любые выбранные строки:

Public Sub refreshDT() 
    Dim cnt As Integer = DGV_SalMaliDataGridView.Rows.Count 
    If cnt = 0 Then 
     lockAll() 
     Exit Sub 
    End If 

    If DGV_SalMaliDataGridView.SelectedRows.Count = 0 Then 
     DGV_SalMaliDataGridView.Rows(0).Selected = true 
    End If 

    unlockAll() 

    Dim sel As String = DGV_SalMaliDataGridView.SelectedRows(0).Cells(1).Value 

    Dim dt As New DataTable 
    dt = SalMaliTA.GetData_SalMali_B_ID(sel) 
    Dim dtr As DataRow = dt.Rows(0) 

    TextBox1.Text = dtr.Item(4) 
    MaskedTextBox1.Text = mc.MtoS(dtr.Item(1)) 
    MaskedTextBox2.Text = mc.MtoS(dtr.Item(2)) 
    CheckBox1.Checked = dtr.Item(3) 
End Sub 
Смежные вопросы