2017-04-01 43 views
0

我有2 DGV名dataListBarangdataListTransaksi,我试图填补dataListTransaksi spesific列dataListBarang称为nm_barangVB.NET - 从另一列填写特定的列的DataGridView

到目前为止我的代码

称为 nama_barang从特定的列
Private Sub dataListBarang_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dataListBarang.CellContentDoubleClick 
     If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then 
      namaBarang = Me.dataListBarang.CurrentRow.Cells(0).Value.ToString 
      dataListTransaksi.Columns(1).DataPropertyName = namaBarang 
     End If 
     dataListBarang.Refresh() 
    End Sub 

,当我在DGV dataListBarang双击,列nama_barang(上dataListTransaksi)将装满值从nm_barang列上DGV dataListBarang,但它不能正常工作ING。

请大家帮忙。

编辑 我想要做的是从当前行复制单元格时,它的用户双击即可填写具体列在第二个DataGrid的第一行(的数据网格有没有数据列在里面)。

enter image description here

注:

  1. 看到左侧的数据网格具有数据和正确的数据网格是空的
  2. 看到的数字!当用户双击,值从1被复制到数2
  3. 右侧data​​Grid中的大部分列都是手动输入的(Nama Barang除外)并保存到数据库
+0

你想复制整列或只是单元格吗?另外,网格数据是否被绑定?设置目标列DataPropertyName ...显然不起作用。 – JohnG

+0

是的,我试图在列复制细胞,第一DGV('dataListBarang')是结合的数据(从表中读出),但是第二DGV('dataTransaksiBarang')不是,因为第二DGV是手动输入(插入到桌子)。 – reynd

+0

如果您正在复制单个单元格...您将在何处将此单元格复制到另一个网格中?例如,用户在第一个网格中双击第3行第3列中的单元格...是否将该单元格复制到另一个网格中的同一行和列中? – JohnG

回答

0

您的照片显示的是右侧的空白DataGridView。如图所示,将单元格从左侧网格复制到右侧网格中的单元格时,会出现一些问题。您必须先“添加”一个新行。否则,用户后续的双击将会覆盖前面的双击。下面的代码检查双击是否来自第0列,如果是这样,只需在右侧的网格中添加新行。列0中的值被复制到新的第1列。希望我不会错过任何东西。

Private Sub dataListBarang_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dataListBarang.CellContentDoubleClick 
    Dim row As Integer = e.RowIndex 
    Dim col As Integer = e.ColumnIndex 
    If (col = 0) Then 
    dataListTransaksi.Rows.Add("", dataListBarang.Rows(row).Cells(0).Value) 
    End If 
End Sub 

更新:如果你不知道哪一列复制,但你知道它的名字..

Private Sub dataListBarang_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dataListBarang.CellContentDoubleClick 
    Dim row As Integer = e.RowIndex 
    Dim col As Integer = e.ColumnIndex 
    If (col = 0) Then 
    Dim newRowIndex As Integer = dataListTransaksi.Rows.Add() 
    dataListTransaksi.Rows(newRowIndex).Cells("MyColName").Value = dataListBarang.Rows(row).Cells(0).Value 
    End If 
End Sub 
+0

感谢@JhonG,我根据你的答案提出了我的解决方案。 – reynd

0

我修改通过@JhonG

Private Sub dataListBarang_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dataListBarang.CellContentDoubleClick 
     Dim row As Integer = e.RowIndex 
     Dim col As Integer = e.ColumnIndex 
     namaBarang = Me.dataListBarang.CurrentRow.Cells(0).Value.ToString 
     If (col = 0) Then 

      If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then 
       dataListTransaksi.Rows.Add("", namaBarang) 
       'hargaBarang = Me.dataListBarang 
       'Me.dataListTransaksi.CurrentRow.Cells(1).Value = namaBarang 
      End If 
     End If 

时,基于回答我的代码我双击firstDataGrid它将值复制到另一个dataGrid并添加新行。

+0

我可能在这里是错误的......但检查是否“e”的行或列小于零是不必要的,因为在网格外双击不会触发此事件。你几乎可以保证这里有效的单元格,即使新行双击也不会触发这个事件。只是一个想法。 – JohnG