- PR -

DataGridでフォーカスがある行のすぐ下に同じデータを持つ行を挿入する方法

1
投稿者投稿内容
kaeru
会議室デビュー日: 2006/03/09
投稿数: 4
投稿日時: 2006-03-09 19:33
こんにちは!

現在、VB.Netを使い、フォームアプリケーションを作成中です。
DBのテーブルから抽出したテーブルをDataGridを用いて表示しています。
そこで、機能として、DataGridのフォーカスがある行と同じデータを持つ新しい行をすぐ下(次の行番号)に挿入しようとしています。
何回か挿入していきますと、次のようなエラーが出ます.
・追加操作をしていないのにDataGrid上のセルをクリックするだけで、新しい行が追加されてしまう。(追加はデータグリッドの外(フォーム上)のボタンをクリックして実行)
・InsertAtを使うとエラーがでます。(ちなみにAddを使うとエラーがおきません)

'------------------------------------
'Me.dtTableにはデータを抽出して格納しています。

Private Sub Btn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btn.Click
InsertDataLine()
end sub

Private Sub InsertDataLine()
Dim row As DataRow
Dim srcRow As Object
row = Me.dtTable.NewRow

Dim bmg As BindingManagerBase
bmg = Me.BindingContext(Me.DataGrid1.DataSource)
srcRow = bmg.Current
Dim viewRow As DataRowView
viewRow = CType(srcRow, DataRowView)

row("CD") = viewRow("CD")
Me.dtTable.Rows.InsertAt(row, bmg.Position + 1)

    'これをしないと追加された行はDataGridの最後に表示されてしまいます。
Me.dtTable.AcceptChanges()

DataGrid1.SetDataBinding(Me.dtTable, "")
End Sub
'----------------------------------

これでは、分かりにくいかも知れませんが、アドバイスをお願いします。
(本当に困っています。)TT


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-03-12 20:09
引用:

penguinさんの書き込み (2006-03-09 19:33) より:

・追加操作をしていないのにDataGrid上のセルをクリックするだけで、新しい行が追加されてしまう。(追加はデータグリッドの外(フォーム上)のボタンをクリックして実行)


 これは、エラーが表示される、訳ではないですよね?
 追加されるセルに、規則はありますか?
 または、処理されていないイベントが残っているとか。

引用:

・InsertAtを使うとエラーがでます。(ちなみにAddを使うとエラーがおきません)


ソースコード上で、どんなことをしようとしているときに、どういう例外が発生しますか?

 これだと InsertAt メソッドで冷害が発生しているようにも読めるし、InsertAt を使うと、「追加操作をしていないのにDataGrid上のセルをクリックするだけで、新しい行が追加されてしまう。」とも読めます。

〆 written by Jitta@わんくま同盟 on 2006/03/12
1

スキルアップ/キャリアアップ(JOB@IT)