2011-02-06 10 views
0

私はcsvファイルから作成した19列のDatatable(invTable)を持っています。そのDatatableから、私はcolumn2(name)の値を使ってComboboxに値を設定しています。Filter Combobox 2列目の値に基づく項目

私がする必要があるのは、column9(type)の値がプリセット値と一致する場合にのみ、Comboboxに表示されるcolumn2(name)の項目をフィルタリングすることです。すなわち、column9(type)の値が15の場合にのみです。

また、残りの列の値はComboboxの選択項目に基づいて処理する必要があります。それらをSelectedCol1-SelectedCol19などの変数に割り当て、プログラム全体の他の計算で使用できるようにします。

EDIT: 次のコードで私のニーズに合ったものを見つけることができました。

var query = invTable.AsEnumerable().Where(c => c.Field<String>("Type").Equals("15")); 
combo1.DataSource = query.AsDataView(); 
combo1.DisplayMember = "name"; 
combo1.ValueMember = "Index"; 
+0

私がやっていることは(もしあなたがまだそれをしていないなら)これをメソッドに再因数化することです。このメソッドには、フィールド名(この例では "type")と値(この例では "15")の2つのパラメータがあります。 –

答えて

0

ここでは完全な解決策を提供するつもりはありませんが、私は正しい方向にあなたを送ってください。

基本的には、元のデータセットの「フィルタ」ビューである(データビューを使用する必要があります。ヨーヨーをフィルタするので、毎回、あなたがそれをフィルタ基準を割り当てるのDataViewを作成します。

http://msdn.microsoft.com/en-us/library/system.data.dataview.aspx

上記のリンクはあなたに実用的なソリューションを与える必要があります。年齢の底部に向かって、彼らはまた、例を持っている。

あなたのデータビューは、あなたが、あなたがドロップを移入することの行を反復処理することができますする必要が道をフィルタ処理した後問題の原因を特定してください。

を編集してOPの簡単なステップを提供します。

簡単に始める。私はあなたがコンボボックスに値をつける方法を知っていると仮定しています。

ステップ1:データセット ステップ2のデータの取得:データビュー ステップ3を使用してデータセットをフィルタ:(代わりに、データセットの)データビューを使用してコンボボックスを移入

擬似コード:

DataSet dt = GetInvDataTable(); 
DataView dv = new DataView(dt, "type = 15", null, 
     DataViewRowState.CurrentRows); 

これでDataViewを使って最初と同じようにDataView(変数dv)を使用してCombobBoxを設定できます。

BindingSourceを使用している場合、BindingSourceのDataSourceをDataView(この場合はdv)に設定するだけです。

使用している.NETバージョンについては言及していませんが、3.5または4を使用している場合は、linqを使用してDataSetをフィルタすることもできます。 DataSetExtensionsアセンブリをプロジェクトへの参照として追加する必要があります。

DataTable invDataTable = GetInvDataTable(); 

EnumerableRowCollection<DataRow> query = 
    from inv in invDataTable.AsEnumerable() 
    where order.Field<int>("type") == 15 
    select inv; 

DataView dv = query.AsDataView(); 

bindingSource1.DataSource = dv; 
+0

@ Shiv:dupe answer –

+0

@John、そこに何が起こったのかわからない...以前のものを削除しました –

+0

指示をお寄せいただきありがとうございます。私の主な問題はあまりにも単純なことだと思いますか?私はどこに置くかのようなものを掴むのに苦労します。 100種類の変数を持つ複雑な株式市場型システムを、まつげを打たずに相互に作用させることができます:/私は実際にコーディングしてデバッグする方がはるかに優れています。 – Jason

関連する問題