DataGridViewへの行追加に関して


azusa  2013-03-28 14:38:38  No: 148129  IP: [192.*.*.*]

初歩的な内容で申し訳ありませんが、教えて下さい。

DataGridViewにバインドしてデータを挿入するような事をしていますが、その際に
必ず最終行に追加したいと考えています。

しかし、どうも動きがおかしく、かならず最終行に挿入されないケースがあります。

よくよく調べたところ、1行目に追加した場合は問題ありませんが、2行目に追加する
場合、1行目をクリックしてから追加すると、なぜかカレント行に空白行が追加され、
その1行下にデータが挿入されます。

必ず最終行に追加する為には、どのように記述すれば良いでしょうか?

《現在の記述内容》

   'DataGridViewのセルダブルクリック時処理
    Private Sub GRD_V_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles GRD_V.CellDoubleClick

        Dim C_Row As String
        Dim C_Col As String
        Dim C_Val As String

        C_Row = GRD_V.CurrentCell.RowIndex
        C_Col = GRD_V.CurrentCell.ColumnIndex
        C_Val = GRD_V.CurrentCell.Value.ToString()

        '2列目に入力があった場合のみ処理を行う
        If C_Col = 1 Then

        '変数宣言
            Dim KIN_品目番号 As String
            Dim KIN_品目名称 As String
            Dim PIN_品目番号 As String
    
        'Oracle接続
            Dim Connection As New OracleConnection
            Dim Command As OracleCommand
            Dim DataReader As OracleDataReader

        '変数初期化
            KIN_品目番号 = ""
            KIN_品目名称 = ""

            Dim frm_品目マスタ As New 品目マスタ検索
            frm_品目マスタ.ShowDialog()

            PIN_品目番号 = frm_品目マスタ.Kekka '結果プロパティから

            Dim DIN_品目番号 As String
            DIN_品目番号 = GRD_V.CurrentCell.Value.ToString()

            If DIN_品目番号 <> "" Then

                Return
                Exit Sub

            End If
            frm_品目マスタ.Dispose()
            frm_品目マスタ = Nothing

            'Oracleへのコネクションの確立
            Connection.ConnectionString = "User Id=XXXXXX; Password=999999; Data Source=XE"

            'オープン  
            Connection.Open()
            'コマンド作成  
            Command = Connection.CreateCommand

            If PIN_品目番号 <> "" Then

                'SQL作成  
                Command.CommandText = "SELECT * FROM T_品目マスタ WHERE 品目番号 = '" + PIN_品目番号 + "'"

                'データリーダーにデータ取得  
                DataReader = Command.ExecuteReader
                'データを全件出力  
                Do Until Not DataReader.Read

                    If IsDBNull(DataReader.Item("品目番号")) Then
                        KIN_品目番号 = ""
                    Else
                        KIN_品目番号 = DataReader.Item("品目番号").ToString
                    End If

                    If IsDBNull(DataReader.Item("品目名称")) Then
                        KIN_品目名称 = ""
                    Else
                        KIN_品目名称 = DataReader.Item("品目名称").ToString
                    End If

                Loop

                DataReader.Close()

                Dim data_row As DataRow = dtTable.NewRow()

                data_row("品目番号") = KIN_品目番号
                data_row("品目名称") = KIN_品目名称

                dtTable.Rows.Add(data_row)

            End If

            'DataGridViewの最終行を非表示にする
            GRD_V.AllowUserToAddRows = False

        End If

    End Sub

編集 削除