2011-12-28 15 views
0

私は以下のコードで示すようにデータテーブルをコンボボックスにバインドしています。コンボボックスのアイテムソースにアイテムを追加する

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

今私は、リストの一番上にとして「-1」表示「を選択」などのテキストと値を持つコンボボックスの項目を追加したいです。 itemsourceはデータテーブルにバインドされているため、直接追加できません。 インデックスゼロでobjDataTableNewに行を挿入しようとしました。しかし、私はprobを持っています。 DBから得られるデータテーブルの第0列は整数列である。だから私はその列に文字列値 "選択"を挿入することはできません。

これはどのように達成できますか?

+0

私は、[この議論]推測[1]あなたが必要とするすべての情報を与えるshoudl。 [1]:http://stackoverflow.com/questions/199642/how-to-insert-empty-field-in-combobox-bound-to-datatable – Marthin

+0

良いもの@Marthin、鋳造yheエントリ0の位置に挿入してください。ありがとうございます –

答えて

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

Bind objComboBox.ItemsSource with ObservableCollection。コレクションのコンテンツは、 "select" string + dataテーブル項目になります。

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

すべてのバインドデータの最初とエラーメッセージがかなり自明であるデータテーブル

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

質問を正しく読んでください。私は整数列なので、このような挿入はできません。 –

+0

@NitheshKumarKuntadyあなた自身の質問を正しく読んでください。整数列に文字列を挿入できないというエラーメッセージが表示されます。エラーメッセージはかなり自明です。 – Paparazzi

0

に新しい行を作成します。整数列[0]に文字列( "select")を挿入しようとしているようです。 [0](整数列)に整数 "-1"を挿入し、[1](文字列)に文字列 "select"を挿入します。 [1]が文字列であると仮定します。

0

これが私の仕事:

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