初歩的な内容で申し訳ありませんが、教えて下さい。
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
ツイート | ![]() |