XtraGrid GridControl を使用している場合は、GridControl に含まれるエディターである GridView をさらに処理する必要があります。
通常、データを GridControl の DataSource プロパティにバインドしますが、ユーザー エクスペリエンスのために使用する他のイベントとプロパティのほとんどは、GridView 自体に関連しています。
GridView で取得できる便利なメソッドとプロパティには、、、、などがありFocusedRowHandle
ます。FocusedColumn
GetFocusedRow()
したがって、そのボタンのクリックイベントを登録するときは、そのメソッド内で、グリッドビューへの参照を保存します。
private void SomeButtonClick(object sender, EventArgs e)
{
var gridView = this.whateverYourGridViewIsNamedGridView;
//Now, you can access the methods and properties of the gridView...
//Say you want to obtain the focused row's handle
var rowHandle = gridView.FocusedRowHandle;
//Or, in your case, if you want to iterate through the rows or columns...
for(GridColumn column in gridView.Columns)
{
if(condition)
{
//Do something
}
}
}
シナリオに基づいて、デザイナーを再度開くことをお勧めします。左下で、[インプレース エディター リポジトリ] をクリックします。ここが表示されるはずCheckEdit
です。を選択するCheckEdit
と、小さな稲妻をクリックしてエディタのイベントにアクセスできるはずです。エディターのチェック状態が変更されるたびに発生するCheckStateChanged
イベントまたはイベントに登録します。CheckedChanged
ここから、ドメインオブジェクトまたはビューモデルにブール値を追加して、そのドメインオブジェクトをブール値で装飾しisChecked
ます。このようにして、チェックイベントが発生したときに、このブール値の設定を処理できます...例:
private void CheckEventFiring(object sender, EventArgs e)
{
//Get the currently focused row and cast it to your object
//This will expose all the properties, including the aforementioned boolean value
var currentRow = gridView.GetFocusedRow() as YourDomainObject;
//Based on checked state...
currentRow.IsChecked = //Checked or Unchecked
}
これを設定したので、ボタンをクリックすると、次のようなことを行うことで、グリッド コントロールのデータ ソースから「チェックされている」すべての項目を取得できます...
var dataSource = gridControl.DataSource as List<YourDomainObject>().Where(x => x.IsChecked);
これで、項目がチェックされた行のデータのみが得られました。チェック状態がチェックされていない場合、オブジェクトのブール値は false である必要があり、チェックされている場合は true である必要があります。
これが理にかなっているのかどうか教えてください。Dev Express の習得には少し時間がかかりますが、習得すれば非常に簡単です。