2009-07-22 14 views
2

データの更新後に、選択した行を覚えておくためにDataGridViewコントロールを取得しようとしています。 DataGridViewで選択した行を覚えている

  • 行のインデックスが変数
  • に保存されている行の

    1. ユーザーがクリック:

      Dim FXs As SortableBindingList(Of FX) = FX.LoadAllForBinding(FXStatus) 
      Dim bs As New BindingSource 
      bs.DataSource = FXs 
      

      全体の配列は、このようなものです:
      DGVは、ビジネス・オブジェクトのリストにデータバインドされています

    2. ユーザーがデータをポップアップ形式で編集し、終了すると閉じます
    3. Datagridviewがリフレッシュされました(0から再バインド)
    4. 選択された行は、以前に保存されたインデックス(DGVのDataBindingCompleteイベントに)

      Me.dgvMain.Rows(_CurrentSelectedRowNo).Selected =真

    これは正常に動作するよう、選択さに設定されています行が正しく設定されています(少なくともカウントは0から1になります)。しかし、次に起こるのは、デバッガーがバインドされたビジネスオブジェクトのプロパティにジャンプし(おそらくバインドのためにそれらを読み込む)、DataBindingCompleteイベントがDataBindingが完了する前に起動するように見えるということです。

    DGVには最大約300個の行があるため、行を編集するたびに行ゼロにジャンプするのはかなり迷惑です。

    ここで明らかに間違っているのですか?このために別のイベントを使用すべきですか?

    +0

    データグリッドビューの値を編集できない理由はありますか?ポップアップフォームでデータを編集するメリットは何ですか? – SwDevMan81

    +0

    基本設計では、DGVはフィールドのサブセットのみを表示します。 – Simon

    答えて

    1

    私は似たようなことをしていますが、リフレッシュするタイミングを決定するためにグリッドイベントを使用していません。 編集フォームでの編集が完了したら、私のリフレッシュルーチンを呼び出します。

    グリッド行番号を使用する際の問題は、編集後または編集中に変更されている可能性があります。特に複数のユーザーをサポートしていてグリッドがサーバー上の表のビューである場合、グリッド行。

    変更された行を識別するために行のPK値を使用しなければならず、編集中にpk値の1つを変更する可能性があることを考慮すると、更新されたPK値も追跡する必要があります。

    値を更新するときに自分のイベントを発生させます。

    関連する問題