2015-03-31 66 views
0

我一直在嘗試將值填充到父組合值和子組合值中,並且當用戶在父組合值中選擇一個值時,子組合值需要基於父值顯示。從vb.net中的數據集中填充父數據集和子數據組合框中的值

這是在Form_Load代碼:(MyDataSet.xsd是數據集名稱,其中ITEM_HEAD是父表和ITEM_SUB_DETAIL子表)

Dim ds As DataSet = MyDataSet 

     Me.BindingSource1.DataSource = ds 
     Me.BindingSource1.DataMember = "ITEM_HEAD" 

     Me.BindingSource2.DataSource = Me.BindingSource1 
     Me.BindingSource2.DataMember = "ITEM_SUB_DETAIL" 


     Me.cboCategory.DataSource = Me.BindingSource1 
     Me.cboCategory.DisplayMember = "ITEM_CATEGORY_NAME" 
     Me.cboCategory.ValueMember = "ITEM_CATEGORY_ID" 


     Me.cboItemCode.DisplayMember = "ITEM_SUB_NAME" 
     Me.cboItemCode.ValueMember = "ITEM_SUB_ID" 
     Me.cboItemCode.DataSource = Me.BindingSource2 
     Me.cboItemCode.SelectedValue = Me.BindingSource1 

在運行時,該代碼產生以下錯誤:

'DataMember屬性'ITEM_SUB_DETAIL'無法在 DataSource中找到。

問題在哪裏,並有其他最好的方法來填充父組件和子組合框?

+0

您應該加載的子表也從'MyDataSet'而不是從'Me.BindingSource1' – 2015-03-31 09:55:22

回答

0

更改您的代碼如下,

Dim ds As DataSet = MyDataSet 

Me.BindingSource1.DataSource = ds 
Me.BindingSource1.DataMember = "ITEM_HEAD" 

Me.BindingSource2.DataSource = ds 
Me.BindingSource2.DataMember = "ITEM_SUB_DETAIL" 

因爲,你必須從主數據集,而不是從另一個表加載,當你指向的Me.BindingSource1的表稱爲ITEM_HEAD還裝載子表有沒有機會從該BindingSource的加載另一個表

+0

加載非常感謝西格利揚庫馬爾,第一個組合能正常工作,但第二個是空的 – 2015-03-31 10:08:49

+0

@AmjadhNm ,ITE似乎沒有數據主數據集中存在M_SUB_DETAIL表 – 2015-03-31 10:10:47

+0

不,它不是空的,它的數據按照外鍵的規範,是因爲任何關係問題? – 2015-03-31 10:38:27