- PR -

[VS.NET2005][C#]DataGridViewにバインド列と非バインド列を混合した場合・・・

1
投稿者投稿内容
ベテラン
会議室デビュー日: 2005/05/16
投稿数: 85
お住まい・勤務地: 千葉県在住
投稿日時: 2007-03-16 09:41
【環境】
OS:WindowsXPPro
VS:VS.NET2005
言語:C#
AP:Windowsアプリ

いつもお世話になっております。

DataGridViewの列が、全てバインドされた列の場合や、全て非バインド列の場合には問題ないのですが、バンド列と非バインド列が混ざったDataGridViewの場合、(標準機能の)ソートを行うと非バインド列の値やErrorTextがクリアされてしまう。
そんな経験をされた方はおりませんか?

現在、まさにそのような現象に頭を悩ませています。
この現象を回避する為には、自前で非バインド列の値を別途保持して、ソート後に再セットさせなければいけないものなんでしょうか?
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-03-16 11:12
私も同じ事象を経験して、いろいろ調べました。
これはどうも仕様のようです。
バインド列と非バインド列を混在させる場合は
DataGridViewを仮想モードとして実装する必要があるようです。
以下の資料が参考になると思います。

Windows フォーム DataGridView コントロールでの仮想モード

具体的にはCellValueNeededイベント等を使うことになると思います。

#URL修正しました

[ メッセージ編集済み 編集者: KI 編集日時 2007-03-16 11:14 ]
ベテラン
会議室デビュー日: 2005/05/16
投稿数: 85
お住まい・勤務地: 千葉県在住
投稿日時: 2007-03-20 08:51
KIさん、こんにちは。
お返事が遅くなってしまって申し訳ありません。

引用:

これはどうも仕様のようです。
バインド列と非バインド列を混在させる場合は
DataGridViewを仮想モードとして実装する必要があるようです。



実際に試してみました。
仮想モードにしてCellValueNeededイベント等を利用して、非バインド列の情報を
自分でセットしてあげないといけないのですね・・・

値だけの再セットであれば話しはそう難しくは無さそうですが、ErrorText等の
情報まで再セットさせようとすると、めんどくさそうですね〜
(仕様では致しかた在りませんが・・・

今後はなるべく、バインド列・非バインド列が混合させないようにします。
KIさん、有難うございました。
1

スキルアップ/キャリアアップ(JOB@IT)