鉛筆アイコンは、グリッド上での値の変更がまだバインドされているデータソースに反映されていない場合に表示されます。例えば、エンド ユーザーがセルの値を編集している最中やコードでセルの Value を書き換えた場合、あるいはセル編集後にフォーカスを奪わないボタンをクリックしたとき、等々が当てはまります。
それぞれの場合に応じて方法が異なります。
1. エンド ユーザーがセルを編集している最中に表示される鉛筆アイコンを消す方法
UltraGrid の DisplayLayout の RowSelectorImages にある DataChangedImage プロパティに null を設定してください。DataChangeImage はコミットされていないデータがあるときに表示するアイコンを指定するプロパティです。null にすることでアイコン無し(つまり鉛筆アイコンが非表示)になります。
// UltraGrid の InitializeLayout で実装する場合のコード例 private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e) { UltraGridLayout layout = e.Layout; layout.RowSelectorImages.DataChangedImage = null; }
2. コードでセルの Value を書き換えた場合に表示される鉛筆アイコンを消す方法
セルの Value を書き換えた後にデータソース側にコミットする処理をしてください。グリッド全体で全コミットしたい場合は UltraGrid の UpdateData メソッドで、行単位でコミットしたい場合は 行の Update メソッドでコミットできます。
// セルの値を変更する(このコードを実行すると鉛筆アイコンが表示されます)。 ultraGrid1.Rows[1].Cells[1].Value = "abc"; // UltraGrid の UpdateData メソッドを使う場合のコード例 ultraGrid1.UpdateData(); // もしくは、行の Update メソッドを使う場合のコード例 ultraGrid1.Rows[1].Update();
3. セル編集後にフォーカスを奪わないボタンをクリックした場合に表示され続ける鉛筆アイコンを消す方法
UltraGrid の PerformAction メソッドで編集モードから抜ける処理をしてください。
// フォーカスを奪わないボタンのクリック イベント ハンドラー内で if(ultraGrid1.ActiveCell?.IsInEditMode) { ultraGrid1.PerformAction(UltraGridAction.ExitEditMode); }
API リファレンス
このナレッジ ベースで触れたプロパティやメソッド等の API リファレンスです。
- DataChangedImage
- UpdateData メソッド
- Update メソッド
- PerformAction メソッド
- UltraGridAction 列挙体(註: PerformAction に渡すことができる引数です)