2012-04-23 96 views
1

したがって、データベースのデータでデータグリッドビューを作成しています。 この時点で、ユーザーは、データグリッドビュー内の1つ以上の行を選択してもしなくてもよい(マウスクリック/キーを押すことによって)。DataGridView複数の行選択、特定の列データの取得

私は(選択時に)新しいデータセット、データテーブルを作成し、前記データグリッドビューからのいくつかのデータを含む行を追加する必要があります。

たとえば、テーブルに名前だけが含まれているとします。私は、さらなる処理のための別の方法にそれを渡すことができますように、新しいデータセットにそれらの名前を追加するためにショーンとラリー上で選択をドラッグし、ユーザークリックすると

Joe 
Sean 
Larry 
Chris 

、。

ここに私がいる場所があります。

'Get index of current row 
    Dim currentMouseRow As New Integer 
    currentMouseRow = dataGridView_UnAssodevices.HitTest(e.X, e.Y).RowIndex 


    'grab cell data of selected rows 
    Dim ds As New DataSet 
    Dim dt As New DataTable 
    For Each row As DataGridViewRow In dataGridView_UnAssodevices.SelectedRows 
     Dim dr As New DataGridViewRow 
     Dim data As New DataGridViewTextBoxCell 
     data.Value = row.Cells(0).Value 
     dr.Cells.Add(data) 
     dt.Rows.Add(dr) 
     MessageBox.Show(data.ToString) 
    Next 





    'Add contextmenu if right clicked 
    If e.Button = MouseButtons.Right Then 
     Dim m As New ContextMenu() 
     If currentMouseRow >= 0 Then 
      dataGridView_UnAssodevices.Rows(currentMouseRow).Selected = True 
      m.MenuItems.Add(New MenuItem("View Full Device Info")) 
      m.MenuItems.Add(New MenuItem("Associate Device(s)")) 
     End If 
     m.Show(dataGridView_UnAssodevices, New Point(e.X, e.Y)) 
    End If 

しかし、私はこのエラーを取得しておいてください。

Input array is longer than the number of columns in this table. 

私は、列の宣言を欠落しているか、セットにテーブルを追加しているいずれかのように見えますか?

答えて

0

DataTableのDataColumnを作成していないようです。してみましょう

'Get index of current row 
Dim currentMouseRow As New Integer 
currentMouseRow = dataGridView_UnAssodevices.HitTest(e.X, e.Y).RowIndex 


'grab cell data of selected rows 
Dim ds As New DataSet 
Dim dt As New DataTable 

'Create a Data Column for your DataTable; Or you can write a loop to create the datacolumn based on the cell in your DataGridViewRow 
dt.Columns.add("Col1") 

For Each row As DataGridViewRow In dataGridView_UnAssodevices.SelectedRows 
    Dim dr As New DataGridViewRow 
    Dim data As New DataGridViewTextBoxCell 
    data.Value = row.Cells(0).Value 
    dr.Cells.Add(data) 
    dt.Rows.Add(dr) 
    MessageBox.Show(data.ToString) 
Next 
+0

私はそれを見落として信じられないことがあります、ありがとう! – Ealianis

関連する問題