2016-05-12 7 views
1

Я пытаюсь изменить второй combobox на основе первого выбора. Для первого combobox я получаю данные из таблицы в базе данных.C# wpf combobox selection

  { 
     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

google каскадные выпадающие списки. Это решенная проблема. – Crowcoder

ответ

0

Когда вы выбрали категорию (он же элемент из первых ComboBox), таких как автомобиля, вы можете прочитать данные из базы данных, где ваши транспортные средства в настоящее время хранится, чем вы можете фильтровать их по типу "автомобиль".

Например, в LINQ:

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

Конечно, этот пример использует тип как строку, а item объект имеет свойство Type, но вы должны использовать свою собственную реализацию.

0

Одна из замечательных особенностей использования WPF - использование привязок для обновления пользовательского интерфейса. В этом случае вы пытаетесь принудительно обновить пользовательский интерфейс. Пользовательский интерфейс должен обновляться на основе изменений в модели данных подчеркивания. Я бы рекомендовал использовать 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, где CarName = '" + ComboBox1.Text + "'" Groupby CarName; SqlCommand cmd = новый SqlCommand (str, con); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { ComboBox1.Text = dr ["CarName"]. ToString();

  con.Close(); 
     } 
    } 
+0

Я пробовал этот код, но во втором combobox появляется что-нибудь – user5827232