嗨,我已经创建了一个数据集和两个数据表 . 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中正确的子行 . 这可能吗?
1 回答
诀窍在于绑定 . Click here为完整解决方案,其中包括创建
DataSet
:这是重要的部分,考虑到你已经有一个
DataSet
包含两个DataTables
和一个DataRelation
:在这种情况下,
data
是DataSet
. 请注意,父BindingSource
通过DataSet
绑定到父DataTable
,而子BindingSource
通过父BindingSource
绑定到DataRelation
,而不是绑定到子DataTable
.另请注意,我的原始示例绑定到
ComboBox
控件,但正如我在该线程中所说,无论控件的类型如何,原理都是相同的 . 我编辑了上面的代码,改为使用DataGridView
控件 .