本博客的目标读者为关于 .NET domain 的新手。这个 Case 在论坛中也经常提及:如何在两个 C1TrueDBGrid 间传递数据。
在本示例中,我们使用 MainForm 中的 C1TrueDBGrid1 来接收数据。使用另一个 Form 中的 C1TrueDBGrid2 传递数据。通过双击 C1TrueDBGrid2 中的行,把该行传递到 C1TrueDBGrid1.
下面让我们来看看实现方法:
C1TrueDBGrid1 为非绑定状态。给非绑定状态 C1TrueDBGrid 添加数据,我们需要定制列。可以通过设计器或者代码定制列。参考文档:documentation 。
调用子窗体的代码如下:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim chFrm As New DataForm(C1TrueDBGrid1)
chFrm.ShowDialog()
End Sub
通过以上代码,你会发现我们传递了 C1TrueDBGrid1 到子窗体。传递数据代码如下:
Public Class DataForm
Dim c1Tdbgrid As C1.Win.C1TrueDBGrid.C1TrueDBGrid
Public Sub New(ByVal c1TDB As C1.Win.C1TrueDBGrid.C1TrueDBGrid)
InitializeComponent()
c1Tdbgrid = c1TDB
C1TrueDBGrid1.DataSource = <set the Datasource>
End Sub
Private Sub C1TrueDBGrid1_MouseDoubleClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles C1TrueDBGrid1.MouseDoubleClick
Dim dr As System.Data.DataRowView = CType(Me.C1TrueDBGrid1(Me.C1TrueDBGrid1.Row), System.Data.DataRowView)
Dim rowValues As New StringBuilder
For i As Integer = 0 To dr.Row.ItemArray().ToList().Count - 1
rowValues.Append(dr.Row.Item(i).ToString())
If (i < dr.Row.ItemArray.ToList().Count - 1) Then
rowValues.Append(";")
End If
Next
c1Tdbgrid.AddRow(rowValues.ToString())
End Sub
End Class
这种方法同样适用于 C1FlexGrid。
效果图:
下载 Demo:
Download Sample C#
Download Sample VB