代码之家  ›  专栏  ›  技术社区  ›  Thomas Carlton

如何将数据绑定到数据关系?

  •  0
  • Thomas Carlton  · 技术社区  · 7 年前

    我有以下代码来创建两个绑定源。第一个是主表,第二个是基于关系的子表。

        Dim DataSet As New DataSet
        Dim BindingSource1 As New BindingSource
        Dim BindingSource2 As New BindingSource
    
        Dim DataTable1 As DataTable = GetDT1()
        Dim DataTable2 As DataTable = GetDT2()
    
        DataSet.Tables.Add(DataTable1)
        DataSet.Tables.Add(DataTable2)
    
        Dim Rel As DataRelation = New DataRelation("R", DataSet.Tables("DT1").Columns("C1"), DataSet.Tables("DT2").Columns("C1"), True)
        DataSet.Relations.Add(Rel)
    
        BindingSource1.DataSource = DataSet
        BindingSource1.DataMember = "DT1"
    
        BindingSource2.DataSource = DataSet
        BindingSource2.DataMember = "R"
    

    其中GetDT1和GetDT2如下:

    Public Function GetDT1() As DataTable
        Dim DT As New DataTable("DT1")
    
        DT.Columns.Add(New DataColumn("C1"))
    
        Dim R As DataRow = DT.NewRow
    
        R("C1") = 1
        DT.Rows.Add(R)
    
        R = DT.NewRow
        R("C1") = 2
        DT.Rows.Add(R)
    
        R = DT.NewRow
        R("C1") = 3
        DT.Rows.Add(R)
    
        Return DT
    End Function
    
    Public Function GetDT2() As DataTable
        Dim DT As New DataTable("DT2")
    
        DT.Columns.Add(New DataColumn("C1"))
        DT.Columns.Add(New DataColumn("C2"))
    
        Dim R As DataRow = DT.NewRow
    
        R("C1") = 1
        R("C2") = "A"
        DT.Rows.Add(R)
    
        R = DT.NewRow
        R("C1") = 1
        R("C2") = "B"
        DT.Rows.Add(R)
    
        R = DT.NewRow
        R("C1") = 2
        R("C2") = "Coucou"
        DT.Rows.Add(R)
    
        Return DT
    End Function
    

    运行代码时,行中出现错误: BindingSource2.DataMember=“R” . 上面写着:

    在数据源上找不到数据成员属性“R”。

    有人知道我的密码怎么了吗?

    干杯,

    1 回复  |  直到 7 年前
        1
  •  0
  •   Thomas Carlton    7 年前

    答案如下:

    Dim DataSet As New DataSet
    Dim BindingSource1 As New BindingSource
    Dim BindingSource2 As New BindingSource
    
    Dim DataTable1 As DataTable = GetDT1()
    Dim DataTable2 As DataTable = GetDT2()
    
    DataSet.Tables.Add(DataTable1)
    DataSet.Tables.Add(DataTable2)
    
    Dim Rel As DataRelation = New DataRelation("R", DataSet.Tables("DT1").Columns("C1"), DataSet.Tables("DT2").Columns("C1"), True)
    DataSet.Relations.Add(Rel)
    
    BindingSource1.DataSource = DataSet
    BindingSource1.DataMember = "DT1"
    
    BindingSource2.DataSource = BindingSource1
    BindingSource2.DataMember = "R"
    
    推荐文章