C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: DataGridViewのFilterで空白を指定するには


(過去ログ 63 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■36211 / inTopicNo.1)  DataGridViewのFilterで空白を指定するには
  
□投稿者/ ゆる (6回)-(2009/05/25(Mon) 10:47:18)

分類:[C#] 

いつも大変勉強させていただいています。

DataGridViewで任意のColumnでFilterをかけることをしたいのですが、一部うまくいきません。

任意のセルをダブルクリックすると、その内容でFilterがかかるようにしたいのです。
現在、ダブルクリック時に以下のように
DataGridViewのDataSourceであるBindingSourceのFilterプロパティを設定しています。

xxBindingSource.Filter =
xxGridView.Columns[e.ColumnIndex].DataPropertyName.ToString() + "='"
 + xxGridView[e.ColumnIndex, e.RowIndex].Value.ToString() + "'";


何らかのデータが入っているときは問題なく動作するのですが、
空白のセルで実行するとデータが全く表示されなくなってしまいます(Filter後の表示が0件になります)。
このとき、データがないセルで実行したとき、Filterは「(列名)=''」となっていました。

そこで、手探りながらもデータがない状態のFilterプロパティを以下のようにしてみたところ、
それぞれ以下のように怒られてしまいました。
「(列名)IS Null」→ 'Null' 演算子の後にオペランドがありません。
「(列名)= ""」→ 位置 15 のトークン '"' を変換できません。

期待する動作としては、
空白のセルでFilterをかけると、該当する列の値が空白のものだけ表示されるようなFilterがかかるようにしたいのです。

初歩的な躓きのような気がしますが、アドバイス頂戴できますと幸いです。
どうかよろしくお願いいたしますm(_ _)m



引用返信 編集キー/
■36212 / inTopicNo.2)  Re[1]: DataGridViewのFilterで空白を指定するには
□投稿者/ みきぬ (436回)-(2009/05/25(Mon) 11:11:02)
No36211 (ゆる さん) に返信
> 「(列名)IS Null」→ 'Null' 演算子の後にオペランドがありません。
列名に空白などが含まれているためにうまく解釈されていないような気がするので、
列名の部分を角カッコ [ ] で囲んでみてください。

> 「(列名)= ""」→ 位置 15 のトークン '"' を変換できません。
ダブルクォート " のかわりに、シングルクォート ' を使ってください。
列名を角カッコで囲むのもしたほうがいいかな?

たぶんそれでうまくいくはず。
「[列名] is null or [列名] = ''」のように、orで結んでもいいかもね。
引用返信 編集キー/
■36215 / inTopicNo.3)  Re[2]: DataGridViewのFilterで空白を指定するには
□投稿者/ ゆる (7回)-(2009/05/25(Mon) 11:44:10)
みきぬさま

早速の返信ありがとうございます。
ばっちり解決しました!

うまくいかなかった直接の原因は、 列名 + "Is Null"と文字列を継げていたため
"列名Is Null"と、列名とIsがつながって解釈されていたためのようでした…。

"[列名]Is Null"でうまくいくようになり、
"[列名] Is Null"として対応完了しました。

おばかな内容で失礼しました、大変に助かりました。
ありがとうございましたm(_ _)m


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -