(.Net)DataGridViewのCellFormattingイベント発生タイミングにやられた
(.Net)バインドされたDataGridViewでソートするとセルの色が元に戻るで、セルの値に基づいてDataGridViewのスタイルを変更するにはCellFormattingを使うべきだ と書きました。

ところが、CellFormattingイベントでは対応できない場面が出てきました。

問題となるのは、スタイル変更の判定元となるセルが横スクロールしないと表示されないようなグリッドの場合です。

その場合、そのセルがスクロールされて表示されないと CellFormatting が走らないため初期段階では背景色が変わりません。

列を先頭に持ってきてもいいがそうはできないので、下記のように対応しました。

private void RowStyleChange_Disable()
{
if (FilterTypeValue == Utility.FilterType.UserSearch) return;
foreach (DataGridViewRow item in dgvChild.Rows)
{
if ((bool)item.Cells["Disable"].Value == true){
item.DefaultCellStyle.BackColor = Color.Red;
}else{
item.DefaultCellStyle.BackColor = null;
}

}
}
 
//バインドしたときにスタイル変更
private void dgvChild_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
RowStyleChange_Disable();
}

結局CellFormattingイベントで処理するのをやめて、バインドしたときとソート後に手動(RowStyleChange_Disableメソッド呼び出して)で背景変更するようにしました。
[PR]
by jehoshaphat | 2010-04-17 00:50 | .Net開発 | Trackback | Comments(0)
トラックバックURL : http://jehupc.exblog.jp/tb/12492019
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。


<< (.Net)DataGridV... (.Net)DataGridV... >>