DataGridViewに関して


misamisa  2013-03-18 09:30:38  No: 148117  IP: [192.*.*.*]

教えて下さい。

以下のように記述し、GRD_入力(DataGridView)で2列目の項目がダブルクリックされた場合、別画面から番号を
取得し、それを最終行に追加するというような事を行っています。

その際に、次々に追加する場合は問題なく最終行に追加されますが、例えば3行目の入力する際に、1行目
をクリックした後に3行目をダブルクリックし、その後同じ事をすると3行目が空白となり、4行目にデータが表示
されてしまいます。

純粋にどのような形であっても最終行にデータを表示させる場合はどのような記述をすれば良いでしょうか?

教えて頂ければ幸いです。

よろしくお願いします。



Private Sub GRD_入力_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles GRD_入力.CellDoubleClick

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

    C_Row = GRD_入力.CurrentCell.RowIndex
    C_Col = GRD_入力.CurrentCell.ColumnIndex
    C_Val = GRD_入力.CurrentCell.Value.ToString()

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

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

        Dim PIN_番号 As String

        Dim Connection As New OracleConnection
        Dim Command As OracleCommand
        Dim DataReader As OracleDataReader

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

        Dim DIN_番号 As String

        DIN_番号 = GRD_入力.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()

            lngRet = dtTable.Rows.Count()

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

            dtTable.Rows.Add(data_row)

        End If

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

    End If

End Sub

編集 削除