2011-12-28 196 views
0

我綁定了一個數據表組合框,就像我在下面的代碼中顯示的那樣。添加項目到組合框元素

 objComboBox.ItemsSource = objDataTableNew.DefaultView; 
     objComboBox.DisplayMemberPath = objDataTableNew.Columns[0].ToString(); 
     objComboBox.SelectedValuePath = objDataTableNew.Columns[1].ToString(); 
     objComboBox.SelectedIndex = 0; 

現在我想顯示文本爲「選擇」和值「-1」增加組合框項目列表的頂部。 直接我不能添加,因爲itemsource與數據表綁定。 我試圖在索引零處插入一行到objDataTableNew。但我有一個概率。從DB獲得的數據表的第0列是整數列。所以我不能插入字符串值「選擇」到該列。

我該如何做到這一點?

+0

我猜[討論] [1] shoudl給你你需要的所有信息。 [1]:http://stackoverflow.com/questions/199642/how-to-insert-empty-field-in-combobox-bound-to-datatable – Marthin 2011-12-28 11:29:42

+0

好一個@Marthin,澆鑄YHE條目並插入位置0.many謝謝 – 2011-12-28 11:55:17

回答

0
  List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>(objDataTable.Rows.Cast<DataRow>().Select(row => new KeyValuePair<string, string>(row[DisplayMemberColumn].ToString(), row[SelectedValueColumn].ToString()))); 
      list.Insert(0, new KeyValuePair<string, string>("<--Select-->", "-1")); 
      objComboBox.ItemsSource = list; 
      objComboBox.DisplayMemberPath = "Key"; 
      objComboBox.SelectedValuePath = "Value"; 
      objComboBox.SelectedIndex = 0; 
0

將objComboBox.ItemsSource與ObservableCollection綁定,其中collection的內容將是「select」字符串+數據表項。

0

嘗試使用WPF中的CompositeCollection

<ListBox xmlns:System="clr-namespace:System;assembly=mscorlib" 
    xmlns:Collections="clr-namespace:System.Collections;assembly=mscorlib"> 
     <ListBox.Resources> 
      <Collections:ArrayList x:Key="TestCollection"> 
       <System:String>1</System:String> 
       <System:String>2</System:String> 
       <System:String>3</System:String> 
       <System:String>4</System:String> 
      </Collections:ArrayList> 
     </ListBox.Resources> 
     <ListBox.ItemsSource> 
      <CompositeCollection> 
       <System:String>--Select--</System:String> 
       <CollectionContainer 
        Collection="{StaticResource TestCollection}"/> 
      </CompositeCollection> 
     </ListBox.ItemsSource> 
    </ListBox> 

所以代替StaticResource您可以從您的視圖模型提供Binding爲好。

希望這會有所幫助。

-1

所有數據綁定到數據表中,並創建新行的DataTable

DataRow row = dt.NewRow(); row["Category"] = "<-Please select Category->"; dt.Rows.InsertAt(row, 0); CBParent.DataSource = dt; 
+0

正確地閱讀問題。我不能像這樣插入,因爲它是整數列。 – 2011-12-28 12:43:12

+0

@NitheshKumarKuntady正確閱讀你自己的問題。您將收到一條錯誤消息,指出您無法在整數列中插入字符串。錯誤消息是非常明顯的。 – Paparazzi 2011-12-28 16:16:36

0

錯誤消息首先是非常自我解釋。看來你正在綁定一個字符串(「選擇」)在一個整數列[0]。在[0](整數列)中插入整數「-1」,在[1]中插入字符串「select」(字符串列)。假設[1]是一個字符串列。

0

這爲我工作:

DataRow row = dt.NewRow(); 
row["Category"] = "<-Please select Category->"; 
dt.Rows.InsertAt(row, 0); 
CBParent.DataSource = dt;