2012-08-02 90 views
0

運行與LINQ to SQL的模型項目,並結合我的連擊BindingSource的控件,我有兩個組合框,首先顯示的表給出了數據庫表名(ID,表名)和第二應綁定到在第一個組合所選擇的表,我想這樣的代碼:如何動態地改變其他組合框的值改變組合框

 private void ComboBox1_TextChanged(object sender, EventArgs e) 
    { 
     if (ComboBox1.Text == "Customers") 
     { 
      var qry = (from u in dc.Customers 
         select u).ToList(); 
      comboBox2.ValueMember = "CustomerID"; 
      comboBox2.DisplayMember = "CompanyName"; 
      comboBox2.DataSource = qry; 
     } 
     if (ComboBox1.Text == "Suppliers") 
     { 
      var qry = (from u in dc.Suppliers 
         select u).ToList(); 
      comboBox2.ValueMember = "SupplierID"; 
      comboBox2.DisplayMember = "CompanyName"; 
      comboBox2.DataSource = qry; 
     } 
    } 

有了上面的代碼,我可以顯示第一個組合項目,我也可以顯示在默認情況下第二個組合的項目,但當我改變了第一個組合內容,我得到錯誤的comboBox2.ValueMember =「供應商ID」;信息:System.ArgumentException了未處理 消息=鏈接到不可能的新值構件。請如何將combobox2.ValueMember重置爲新字段名稱?

+0

請告訴我場裏面dc.Suppliers錯誤是扔N,因爲供應商沒有供應商ID在它 – HatSoft 2012-08-03 00:03:58

+0

供應商是否有供應商ID字段中,可以確認在Northwind數據庫樣本。 – 2012-08-03 00:10:28

回答

0

,有必要改變其ValueMember之前初始化組合框的屬性,就像這樣:

 **comboBox2.DataSource = null;** 
     if (ComboBox1.Text == "Customers") 
     { 
      var qry = (from u in dc.Customers 
         select new { u.CustomerID, u.CompanyName }).ToList(); 
      comboBox2.ValueMember = "CustomerID"; 
      comboBox2.DisplayMember = "CompanyName"; 
      comboBox2.DataSource = qry; 
     } 
     if (ComboBox1.Text == "Suppliers") 
     { 
      var qry = (from u in dc.Suppliers 
         select new { u.SupplierID, u.CompanyName }).ToList(); 
      comboBox2.ValueMember = "SupplierID"; 
      comboBox2.DisplayMember = "CompanyName"; 
      comboBox2.DataSource = qry; 
     } 
+0

要初始化的數據源在你的答案,而不是ValueMember – HatSoft 2012-08-03 07:45:50

+0

是因爲初始化數據源初始化組合框的綁定屬性。 – 2012-08-03 13:46:26

0

您需要爲ValueMember &只返回列DisplayMember

var qry = (from u in dc.Suppliers 
      select new { a.SupplierID, a.CompanyName}).ToList(); 
      comboBox2.ValueMember = "SupplierID"; 
      comboBox2.DisplayMember = "CompanyName"; 
      comboBox2.DataSource = qry; 
+0

同樣的問題,我認爲這是與組合設置不相關的查詢問題。可能是我們必須在重新綁定combobo2之前將屬性ValueMember重置爲空。 – 2012-08-03 01:18:21

相關問題