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

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

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

Re[6]: DataGridView ComboBoxCellについて


(過去ログ 62 を表示中)

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

■35363 / inTopicNo.1)  DataGridView ComboBoxCellについて
  
□投稿者/ ryouma (5回)-(2009/04/27(Mon) 14:43:22)

分類:[.NET 全般] 

下記のようにDataGridViewにてコンボボックスを表示しています。
コンボボックスセルはDataTableを使用して、コード値/表記を保持しています。
その際にDisplayValueに指定したColumnの各要素に空文字/半角スペース/その他文字…とすると、
半角スペースに対応するコンボのリストを選択した場合に空文字に設定した値が選択状態となってしまいます。
※空文字と半角スペースの区別ができていないようなのですが、どなたはっきりとした原因をご存知の方いらっしゃったらご教授願えないでしょうか?
※空文字の部分は未選択行としたいために空文字行を追加しています。
 今のところ、空文字ではなくnullを設定することで当現象を回避しようと思っています。

// コンボボックス表示リスト作成
DataTable table = new DataTable();
table.Columns.Add( "disp", typeof( string ) );
table.Columns.Add( "code", typeof( string ) );
table.Rows.Add( string.Empty, string.Empty );
table.Rows.Add( "disp1", " " );
table.Rows.Add( "disp2", "2" );

// (0,0)のセルをコンボボックスセルとする
DataGridViewComboBoxCell cmbCell = new DataGridViewComboBoxCell();
cmbCell.DisplayMember = "disp";
cmbCell.ValueMember = "code";
cmbCell.DataSource = table;
this.dataGridView1[0, 0] = cmbCell;

宜しくお願いいたします。

引用返信 編集キー/
■35366 / inTopicNo.2)  Re[1]: DataGridView ComboBoxCellについて
□投稿者/ ぱぱいやん (9回)-(2009/04/27(Mon) 18:01:21)
ぱぱいやん さんの Web サイト
> 半角スペースに対応するコンボのリストを選択した場合に空文字に設定した値が選択状態となってしまいます。
> ※空文字と半角スペースの区別ができていないようなのですが、どなたはっきりとした原因をご存知の方いらっしゃったらご教授願えないでしょうか?

うーん、単なる仕様の問題じゃないのかなー
引用返信 編集キー/
■35367 / inTopicNo.3)  Re[1]: DataGridView ComboBoxCellについて
□投稿者/ ryouma (7回)-(2009/04/27(Mon) 18:07:43)
>※空文字の部分は未選択行としたいために空文字行を追加しています。
> 今のところ、空文字ではなくnullを設定することで当現象を回避しようと思っています。

と書きましたが、その後の処理にてnull判定がDBNull・nullで頭がこんがらがってしまいました…
できれば、空文字の代わりにnullを使用するのではなく、
そもそもの回避方法をご存知の方いらっしゃりましたらご教授願いますm(__)m

ためしに、以下のよう半角SPを検索したところ・・・

string expression = "code = ' '";
DataRow[] foundRows;
foundRows = table.Select( expression );

 disp |Code
@"" |""
Adisp1 |" "
の2つが取得されてしまいました。

また、disp列をUniqueをtrue設定してrowを設定していったところ、

>table.Rows.Add( string.Empty, string.Empty );
>table.Rows.Add( "disp1", " " ); ←例外発生!!!!!
>table.Rows.Add( "disp2", "2" );

矢印のステップ位置で例外が発生しました…
既に登録されているといわれて…
やはり同じに扱われてしまうのでしょうか…?

ComboBoxControlは上記のDataTableをバインドさせても正常に
選択値が確定されるのですが…
引用返信 編集キー/
■35368 / inTopicNo.4)  Re[2]: DataGridView ComboBoxCellについて
□投稿者/ ryouma (8回)-(2009/04/27(Mon) 18:12:02)
No35366 (ぱぱいやん さん) に返信
>>半角スペースに対応するコンボのリストを選択した場合に空文字に設定した値が選択状態となってしまいます。
>>※空文字と半角スペースの区別ができていないようなのですが、どなたはっきりとした原因をご存知の方いらっしゃったらご教授願えないでしょうか?
>
> うーん、単なる仕様の問題じゃないのかなー


お返事ありがとうございます。
やはりそうなのですか…
どこかに記述されていたりすればあきらめもつくのですが…
(まぁ、自分の勉強不足なのですが…)
もう少し調べてみようと思います。

ありがとうございますm(_ _)m



引用返信 編集キー/
■35369 / inTopicNo.5)  Re[3]: DataGridView ComboBoxCellについて
□投稿者/ みきぬ (412回)-(2009/04/27(Mon) 19:36:37)
> どこかに記述されていたりすればあきらめもつくのですが…

MSDN に載ってたりすれば一番いいんですけどねぇ。探してますが今のところ見つかってないです。

ぐぐったら参考になりそうな過去スレッドがあったので貼っておきますね。

■Insider.NET 会議室: DataTableで半角空白と全角空白を区別させるには?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36770&forum=7

■Insider.NET 会議室: DataTableの空白がついたデータに対するフィルタリングについて
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37816&forum=7
引用返信 編集キー/
■35378 / inTopicNo.6)  Re[4]: DataGridView ComboBoxCellについて
□投稿者/ ryouma (10回)-(2009/04/28(Tue) 11:04:01)
みきぬさん

ありがとうございます。
やはり、記述されていなそうですよね…
でも、参考過去スレッドありがとうございますm(_ _)m

やはりDataTableでは文字列の後ろの半角SPの区別はできないみたいなので、
何か別の方法を考えるしかないですね…


同じデータテーブルをバインドした場合に、
ComboBoxControl:選択値の表記正常
DataGridViewComboBoxCell:選択値の表記不正
となってしまうのだけが、気になって仕方ないのですよね…
選択後の値確定⇒表記設定の方法が違うのですかね…
引用返信 編集キー/
■35531 / inTopicNo.7)  Re[5]: DataGridView ComboBoxCellについて
□投稿者/ ryouma (11回)-(2009/05/08(Fri) 10:33:59)
結局ですが…

文字の後ろの半角SP/全角SPは除かれてしまう様ですので、
みきぬさんに教えていただいた

■Insider.NET 会議室: DataTableで半角空白と全角空白を区別させるには?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36770&forum=7

■Insider.NET 会議室: DataTableの空白がついたデータに対するフィルタリングについて
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37816&forum=7

を参考にさせていただき下記のどちらかにて対応しようと思います。

@・コンボボックスのValueMemberに対応するカラムの型をobject型にする。←コンボ選択時はこれで正常選択となる
 ・自身でSelectを使用して絞り込むときには、

>Table.Select("ValueColumn + '$$' = ' $$'") 

  などとし文字列の後ろに文字を付加して検索する。
 (ただ、objectにするのは危険そうとのコメントがありました…)

A・ValuleMemberに対応する各文字列については、Tableへ追加する際全て最後尾に"$$"(文字は何でもOK)
  を付加する。
  ⇒但し、実際に選択した値を使用する際には、付加した文字を削除して使用する。

なにか、おかしな点があるな〜と思われましたら
ご指摘いただけるとありがたいですm(_ _)m
みきぬさん、ありがとうございます。

引用返信 編集キー/
■35537 / inTopicNo.8)  Re[6]: DataGridView ComboBoxCellについて
□投稿者/ ryouma (12回)-(2009/05/08(Fri) 15:26:10)
 
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -