2016-05-12 101 views
1

我試圖根據第一個選擇更改第二個組合框。對於第一個組合框,我從數據庫中的表中獲取數據。c#wpf組合框選擇

  { 
     SqlConnection conn = new SqlConnection("Server = localhost;Database = autoser; Integrated Security = true"); 
     SqlDataAdapter da = new SqlDataAdapter("Select id_type,type FROM types", conn); 


     DataSet ds = new DataSet(); 

     da.Fill(ds, "types"); 



     typescb.ItemsSource = ds.Tables[0].DefaultView; 
     typescb.DisplayMemberPath = ds.Tables[0].Columns["type"].ToString(); 
     typescb.SelectedValuePath = ds.Tables[0].Columns["id_type"].ToString(); 

    } 

例如,如果在第一個下拉框我選擇在第二輛卡車應顯示卡車的列表,或者如果我選擇車,在第二個應該出現的是在我的數據庫車的列表。我在這個網站看了一些帖子,他們沒有幫助我,所以我發佈這個問題。對不起,我的英語不好!

+0

谷歌級聯下拉。這是一個解決的問題。 – Crowcoder

回答

0

當你選擇一個類別(又名一個項目從你的第一ComboBox),如汽車,你可以從數據庫中,被存儲在您的車輛讀取數據,比你可以通過類型來過濾他們「汽車」。

例如在LINQ:

var cars = readFromDbList.Where(item => item.Type == "car"); 

當然,這個例子是使用類型爲字符串,item對象有一個Type屬性,但你會用自己的實現。

0

使用WPF的好處之一是使用綁定來更新UI。在這種情況下,您試圖強制更新UI。您的用戶界面應根據對下劃線數據模型的更改進行更新。我會推薦使用SQLMetal來生成一個ORM層,LINQ來獲取你的數據,並且WPF來渲染。

我前段時間寫了一篇關於設置它的文章。 http://netlegger.blogspot.ca/2013/05/using-linq-to-sql-with-sqlmetal-wpf.html

當你擁有了一切設置,你的綁定可以根據屬性更改事件觸發。您在下劃線數據模型中更改的任何內容都將反映在用戶界面中。

0

您應該是SelectIndexChange事件上的代碼。

con.Open(); string str =「select * from Tablename where CarName ='」+ ComboBox1.Text +「'」Groupby CarName; SqlCommand cmd = new SqlCommand(str,con); SqlDataReader dr = cmd.ExecuteReader(); if(dr.Read()) ComboBox1.Text = dr [「CarName」]。ToString();

  con.Close(); 
     } 
    } 
+0

我試過這段代碼,但在第二個組合框中,我看到了任何東西 – user5827232