QA@IT

データテーブルへのデータ反映について

3418 PV

VS2010PROを使っています。
Windowsフォームのテキストボックスに入力した値をデータテーブルに反映して、
データグリッドビューに表示いたしたく思います。

1行目にその値を反映させる事は出来るのですが、
複数回行うと直前の値が消えてしまいます。
Dim dataRow As DataRow = dt.Rows(0)

1回目に8と入力:8になります
2回目に5と入力:1回目の値が8から5に変わってしまいます

dt.Rows(0)→データテーブルの1行目を意味するので、
常時1行目の列に値をセットしてしまうのは分かるのですが。

前の結果を保持して、1行目から下の行に値が反映されるにはどうすれば良いでしょうか?

ご教授頂けないでしょうか?

宜しくお願いします。

宜しくお願いします。

.

回答

Formに
TextBox1 As TextBox
Button1 As Button
DataGridView1 as DataGridView
BindingSource1 as BindingSource
を貼り付けあるとします。

DataGridView1の
   DataSource = BindingSource1
列はColum1を作成し、DataPropertyName=Column1
とします。

記述コード

Public Class Form1
    Private tbl As New DataTable
    Public Sub New()
        ' この呼び出しはデザイナーで必要です。
        InitializeComponent()

        ' InitializeComponent() 呼び出しの後で初期化を追加します。
        tbl.Columns.Add("Column1", GetType(String))
        BindingSource1.DataSource = tbl
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        tbl.Rows.Add(TextBox1.Text)
    End Sub
End Class

そうするとTextBox1に入力してButton1をクリックする毎に最終行に
入力内容が反映され表示されます。DataGridView1のその他のプロパティを
設定していないので直接入力も出来てしまうので、用途に合わせ変更してみてください。

編集 履歴 (0)

データテーブルへの行の追加は以下のように行います。

'新しい行の作成
dim row as DataRow = dt.NewRow

'値のセット
row("ID") = 5
…

'作成した行のデータテーブルへの挿入
dt.Rows.Add(row)
編集 履歴 (0)
  • 複数回とは2回でなく回数未定。決まってればdt.Rows(0)(1)ですが、5回、10回以上行なう。For i As Integer =0Todt.Rows.Count - 1 Dim Row As DataRow = dt.Rows(i)Row("列") = TextBox2.TextNext 1回目はOK。2回目以降直前の値が消え直近に入力した値が反映。前の結果を保持したい。お願いします -
ウォッチ

この質問への回答やコメントをメールでお知らせします。