2016-05-12 100 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