今の仕事に配属されて1年とちょっとが過ぎました。
この一年間、仕事はずっとVS2003でC#です。
やはり、一番の難物がDataGridです。
掲示板でも何度かDataGridに関する質問をしていますが、
- 行選択
- セル内テキストボックスは消す
- チェックボックスはクリックしたら即座に反映
- CtrlやShiftでエクスプローラっぽい複数選択
などなど、様々なカスタマイズを加えて使い続けています。
DataGridViewっておいしいんでしょうか。
世の中は.NET 3.5ですが、俺はまだ2.0にもなれていませんorz
DataGridViewでもまだ不満だとか、Genericがない世界には戻れないとか、何様のつもりでしょうか。
…失礼しました。
ただ、散々愚痴をこぼしながら、なんだかんだ言って、愛着が出てきています。
仕事では使いそうにないところにまでこだわって、最高のDataGridに育て上げようと思えてきたりします。
そういう時はとても楽しいです。
しかし、どうにもならない時もあります。
DataGridはDataGridでしかなく、神ならぬ身では、その基本実装に手を加えることができません。
ここまでやって来れたんだ、何か方法があるはずだと足掻いては見るのですが、無理なものは無理なのです。
そういう壁にぶち当たると、何もかも嫌になります。
パソコンを窓から放り投げてしまいたくなります。
時にはちょっとハイになって、DataGridViewで遊んでみようとか、上司に泣きついて高いグリッドコントロールを買ってもらおうとか、Controlから派生して一からグリッドを実装してみようとか考えて、また現実に戻ります。
今のところ、これが簡単そうに見えて、どうも無理っぽいです。
それ自体はできるのですが、こだわると無理です。
こだわるとはどういうことかと言うと、
-
行選択のために、クリックした行に対して DataGrid.Select を呼びます。
-
Select から紆余曲折あって、DataGridBoolColumn の Commit が呼ばれます。
-
本来は Commit でデータソースに値を反映するのですが、ここではクリックで即座に反映していますから、Commit で同じ値が2度設定されてしまいます。
別に、値のセットが2回行われても実害はないと思うのですが、なんか気持ちが悪いのです。
…おなか減ってきました。お昼はまだでしょうか。