|
分類:[.NET 全般]
BindingSourceについて質問があります。
現在、以下の処理を行うにあたってBindingSourceを使用することを検討しています。 @DataTableをバインドさせてDataGridViewへデータを表示 ADataGridViewにてタイトル行押下でソートを行えるようにする。(各列のSortModeプロパティをAuto) B新規で行を追加 この際に、ソートを行った状態だと追加行までソートされて追加され、最下行への追加が不可能 そのため、せめて追加した行へカレント行に設定するようにしようと考えました。
そこで、調べてみたところBindingSourceを使用するとグリッド表示上でのRowIndexを取得することが可能だとあったので試してみました。
bindingSource1.DataSource = グリッドへ設定したDataTable ←グリッドへ設定する際に同時に設定するようにしました。
int position = bindingSource1.Find( "キーになる列名", "キーになる値" ); // 表示上の行インデックス取得 bindingSource1.Position = position; // 選択状態の設定
ところが、bindingSource1.Positionでは実際のDataTableのインデックスに該当する情報が表示されている行が選択状態となってしまったので、 グリッドのCurrentCellプロパティへ直接設定を行うことで回避しました…
質問したい内容というのは、 @BindingSource.Position で参照しているリストはリファレンスを見ると…
>基底のリストにおける現在の項目のインデックスを取得または設定します。
とあるので、この場合だと何に該当しているのか…
ABindingSource.Find で検索を行う対象のリストはこの場合で言うと何かということ。
DataSet/DataTalbe…についてかなりの勉強不足だとはわかっておりますが、 ご教授のほどよろしくお願いします。
|