【问题标题】:Showing parent datatable in one datagridview and show child datatable elements in another?在一个datagridview中显示父数据表并在另一个中显示子数据表元素?
【发布时间】:2016-11-25 20:43:41
【问题描述】:

您好,我创建了一个数据集和两个数据表。 URLData 表通过关键字列作为 KeywordData 表的父级。

'Create the primary object to hold both data tables
    Dim AllKeyWordInfo As DataSet = New DataSet("AllKeywordInfo")

    'Create a Datatable For keyword Data. Data Tables are stores In the Dataset
    Dim KeywordData As DataTable = AllKeyWordInfo.Tables.Add("Keywords")

    'Create a Datatable For URL Data.
    Dim URLData As DataTable = AllKeyWordInfo.Tables.Add("URLMetrics")

    'Add Columns to our Keyword datatable
    KeywordData.Columns.Add("Keyword")
    KeywordData.Columns.Add("SearchCount")

    'Add Columns to URLDATA
    URLData.Columns.Add("Keyword")
    URLData.Columns.Add("URL")
    URLData.Columns.Add("DA")
    URLData.Columns.Add("PA")

    'Creat a parent child relationship
    AllKeyWordInfo.Relations.Add("ALLDATA", AllKeyWordInfo.Tables("Keywords").Columns("Keyword"), AllKeyWordInfo.Tables("URLMetrics").Columns("Keyword"))

    'parent
    KeywordData.Rows.Add("TESTEST", "1123829")

    'children 
    URLData.Rows.Add("TESTEST", "288789")
    URLData.Rows.Add("TESTEST", "asdsdsdd")


    DataGridView1.DataSource = KeywordData
    DataGridView2.DataSource = URLData

我想做的是显示 datagridview1 中 KeywordData 表中的所有内容。当用户单击任何行(在数据网格上启用全行选择)时,我希望 datagridview2 显示该关键字的所有子行。每当用户切换 datagridview1 中的行时,它都会切换到 datagridview2 中的正确子行。这可能吗?

【问题讨论】:

    标签: vb.net datagridview datatable dataset


    【解决方案1】:

    诀窍在于绑定。 Click here 获取完整解决方案,其中包括创建 DataSet

    这是重要的部分,考虑到您已经有一个 DataSet 包含两个 DataTables 和一个 DataRelation

    'Bind the parent source to the parent table.
    Me.BindingSource1.DataSource = data
    Me.BindingSource1.DataMember = "Parent" 'This is the name of the parent DataTable.
    
    'Bind the child source to the relationship.
    Me.BindingSource2.DataSource = Me.BindingSource1
    Me.BindingSource2.DataMember = "ParentChild" 'This is the name of the DataRelation.
    
    'Bind the parent control to the parent source.
    Me.DataGridView1.DataSource = Me.BindingSource1
    
    'Bind the child control to the child source.
    Me.DataGridView2.DataSource = Me.BindingSource2
    

    在这种情况下,dataDataSet。请注意,父BindingSource 通过DataSet 绑定到父DataTable,而子BindingSource 通过父BindingSource 绑定到DataRelation,而不是绑定到子DataTable

    还请注意,我的原始示例绑定到 ComboBox 控件,但正如我在该线程中所说,无论控件类型如何,原理都是相同的。我已经编辑了上面的代码,改为使用DataGridView 控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多