- - PR -
[VS.NET2005][C#]DataGridViewにバインド列と非バインド列を混合した場合・・・
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-16 09:41
【環境】
OS:WindowsXPPro VS:VS.NET2005 言語:C# AP:Windowsアプリ いつもお世話になっております。 DataGridViewの列が、全てバインドされた列の場合や、全て非バインド列の場合には問題ないのですが、バンド列と非バインド列が混ざったDataGridViewの場合、(標準機能の)ソートを行うと非バインド列の値やErrorTextがクリアされてしまう。 そんな経験をされた方はおりませんか? 現在、まさにそのような現象に頭を悩ませています。 この現象を回避する為には、自前で非バインド列の値を別途保持して、ソート後に再セットさせなければいけないものなんでしょうか? | ||||
|
投稿日時: 2007-03-16 11:12
私も同じ事象を経験して、いろいろ調べました。
これはどうも仕様のようです。 バインド列と非バインド列を混在させる場合は DataGridViewを仮想モードとして実装する必要があるようです。 以下の資料が参考になると思います。 Windows フォーム DataGridView コントロールでの仮想モード 具体的にはCellValueNeededイベント等を使うことになると思います。 #URL修正しました [ メッセージ編集済み 編集者: KI 編集日時 2007-03-16 11:14 ] | ||||
|
投稿日時: 2007-03-20 08:51
KIさん、こんにちは。
お返事が遅くなってしまって申し訳ありません。
実際に試してみました。 仮想モードにしてCellValueNeededイベント等を利用して、非バインド列の情報を 自分でセットしてあげないといけないのですね・・・ 値だけの再セットであれば話しはそう難しくは無さそうですが、ErrorText等の 情報まで再セットさせようとすると、めんどくさそうですね〜 (仕様では致しかた在りませんが・・・ 今後はなるべく、バインド列・非バインド列が混合させないようにします。 KIさん、有難うございました。 |
1