none
DataGridView の 最終行への 行追加(その2) RRS feed

  • 質問

  • 毎々お世話になります。

    WindowsXP-Pro Ver 2002 SP2 上で
    Visual Studio 2005 Enterprise Edition で
    VB2005 による開発を行っております。

    以前このフォーラムで、下記質問をあげ、回答を頂き、一旦は解決したのですが、また同様の現象が発生するようになってしまいました。

    「DataGridView の 最終行に続けて新規行を追加(アペンド)したいのですが、Rows.Add メソッドでは CurrentRow に Insert されてしまいます。
    また、DataGridView にソート用の列("NO")を設けて、 RowsAdded イベントプロシージャ で ソートさせて
    追加行を最終行に移動させるべく下記のように仕込んでみましたが、状況は変わりません。
              (中略)
    何かうまい手はないでしょうか?
    よろしくお願いします。」

    現在は

            Dim iRow As Integer
            Dim oRow As DataGridViewRow

            With Me.DataGridView1
                ' 最下行の空きを検索
                For iRow = .Rows.Count - 1 To 0 Step -1
                    If .Rows(iRow).Cells("商品名").Value Is Nothing OrElse .Rows(iRow).Cells("商品名").Value.Equals("") Then
                        Exit For
                    End If
                Next iRow
                ' 空きがない場合は空行を確保する
                If iRow < 0 Then
                    .CurrentCell = Me.Dgvレジ入力(.Columns("商品名").Index, .Rows.Count - 1)
                    .ReadOnly = False
                    .BeginEdit(False)
                    .NotifyCurrentCellDirty(True)
                    .EndEdit()
                    .ReadOnly = True
                    iRow = .Rows.Count - 1
                End If

                ' 次の入力の為の空行を確保する
                .CurrentCell = Me.Dgvレジ入力(.Columns("商品名").Index, iRow)
                oRow = .CurrentRow
                .ReadOnly = False
                .BeginEdit(False)
                oRow.Cells("データ種別").Value = "2"    ' 0 - お買上 1-一括割引 2-一括値引
                oRow.Cells("商品名").Value = "一括値引き"
                oRow.Cells("割引").Value = ""
                oRow.Cells("値引き").Value = -Math.Abs(CInt(Me.Txt一括値引_金額.Text))
                .NotifyCurrentCellDirty(True)
                .EndEdit()
                .ReadOnly = True
            End With

    のようになっており、期待したように動作していました。

    何が影響したのかわからないのですが、急に空行が作成されなくなってしまったのです。

    心当たりのある方、どうか助けてください。

    よろしくお願いします。

    2011年8月9日 18:43

回答

  • 自己レスです。

    他の修正や機能追加の改修を行なっているうちにいつの間にか直ってしまいました。

    なぜなのかは相変わらず不明です。

     

    いずれにしても解決です。

    どうもお騒がせ致しました。

    2011年8月11日 7:06