2017-07-13 12 views
0

私のコードの中には、注文の有無にかかわらず、テーブル内の製品情報をフィルタリングする2つのチェックボックスが含まれています。注文している製品はリストに保存されています。私が使用するコードは以下の通りです: - あなたは試してみて、それらをフィルタリングする際RowFilter In/Listなし<String>は行を返さないC#

// productsOnOrder is updated at the beginning of this method based off data stored on a MySQL database. 
if (chkShowOrdered.CheckState == CheckState.Checked) 
{ 
    tempTable.DefaultView.RowFilter = String.Format("StockNo IN ({0})", String.Join(",", productsOnOrder)); 
    tempTable = tempTable.DefaultView.ToTable(); 
} 
else if (chkNotOrdered.CheckState == CheckState.Checked) 
{ 
    tempTable.DefaultView.RowFilter = String.Format("StockNo NOT IN ({0})", String.Join(",", productsOnOrder)); 
    tempTable = tempTable.DefaultView.ToTable(); 
} 

問題があり、製品が順番に存在していても、テーブルは常に空白です。これと同様に、注文しないでフィルタリングしようとすると、すべての製品が表示されます。値が同じ形式であることを確認するために、テーブル内とリスト内の値を大文字に変換しました。

RowFilterはどのようにして目的の結果を得られませんか?

+0

'productsOnOrder'は' string'値の束ですか? – Corak

+0

はいそれらはすべてリストに格納された文字列の値です

+0

'StockNo'を使用する必要がありますか?おそらく 'ProductNo'のようなものでしょうか?もう一つは、 'tempTable'をオーバーライドして完全に新しいオブジェクトになり、古いオブジェクトへのデータバインディングが機能しなくなります。値が数字以外の文字列であれば(引用符で囲んで)エスケープする必要があります –

答えて

0

@ Corakが述べたように、それが機能しなかった理由は、値が単一引用符で囲まれていなかったためです。彼が提供したコードを使用して、問題は解決されました。

関連する問題