2012-07-10 85 views
0

XAML:綁定組合框在數據網格

<ComboBox SelectionChanged="status_SelectionChanged" Height="23" Name="status" ItemsSource="{Binding}" Width="120"> 
</ComboBox> 

如何從數據庫中作爲我的組合框的ItemsSource時添加的項目?

MySqlCommand status_db = new MySqlCommand("select name from request_status", conn); 

這樣:

List<string> combolist = new List<string>(); 
      MySqlDataReader reader = status_db.ExecuteReader(); 
      while (reader.Read()) 
      { 
       combolist.Add((string)reader); 
      } 

而且是錯誤的...

回答

0

它是你最好填寫您的物品例如List<request_status> myList從數據庫列表,然後設置myList爲您的ItemsSource

ItemsSource="{Binding Path=myList}" 
0

你已經在你的組合框0綁定的方式意味着你需要的組合框的DataContext的從SQL查詢中設置到列表:

MySqlCommand status_db = new MySqlCommand("select name from request_status", conn); 
// build a list from the query 
ObservableCollection<YourType> listElements = From_SQL_QUeury; 
ComboOne.DataContext = listElements; // add x:Name="ComboOne" in the XAML for your comboxBox. 
+0

'從查詢中建立一個列表'怎麼樣? – MexVl 2012-07-10 08:12:02

+0

那麼這是一個SQL問題,而不是一個WPF一個:) http://stackoverflow.com/questions/7061329/mysqlcommand-executereader-getstring-does-not-work。檢查更多關於如何使用MySqlCommand的內容 – MBen 2012-07-10 08:19:19

+0

combolist是否爲空?正如我所描述的那樣,您是否將其設置爲dataContext? – MBen 2012-07-10 08:21:04

0

使用您已經向我們展示的代碼,刪除ItemsSource={Binding}部分從您的組合框的XAML。

然後只需添加:

status.ItemsSource = comboList; 

我認爲這足以爲你做的工作,但你必須要考慮使用XAML綁定。但這是另一個大故事......

+0

我設置'<組合框X:名稱=「的ComboItem」 ...'但是這個名字是不可見 – MexVl 2012-07-10 08:56:43

+0

在你原來的代碼你被點名了,你的組合框的狀態,然後將列表comboList。這就是我所用的。你什麼意思不可見?如果你的代碼在你的窗口代碼中沒有問題。 – Dummy01 2012-07-10 10:15:44