C1TrueDBGrid:在 C1TrueDBGrid 之间传递行

发布时间:2013/03/19 00:00 发布者:iceman

返回博客中心

本博客的目标读者为关于 .NET domain 的新手。这个 Case 在论坛中也经常提及:如何在两个 C1TrueDBGrid 间传递数据。

在本示例中,我们使用 MainForm 中的 C1TrueDBGrid1 来接收数据。使用另一个 Form 中的 C1TrueDBGrid2  传递数据。通过双击 C1TrueDBGrid2 中的行,把该行传递到 C1TrueDBGrid1.

下面让我们来看看实现方法:

C1TrueDBGrid1 为非绑定状态。给非绑定状态 C1TrueDBGrid 添加数据,我们需要定制列。可以通过设计器或者代码定制列。参考文档:http://helpcentral.componentone.com/nethelp/c1truedbgrid/#!Documents/creatinganunboundgri.htm。

调用子窗体的代码如下:

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。

效果图:

32131

下载 Demo:

Download Sample C#
Download Sample VB


关于葡萄城

葡萄城软件是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。