none
データテーブルからデータグリッドビューへ表示している場合の行(データ)の追加 RRS feed

  • 質問

  • VB初心者です。

    下記のコードでアプリケーション起動時に
    1.データテーブルを作成
    2.CSVファイルからデータテーブルへデータを読み込み
    3.データテーブルのデータをデータグリッドビューへ表示
    としています。ここまでは完成しています。

    アプリケーション上にデータの追加ボタンbtn_add_Clickを作成してアプリケーション上からデータをリストへ追加していきたいです。
    DataTableにデータを追加して、そのデータをデータグリッドビューへ表示したいのですがどのようなコードにすればいいでしょうか?
    ご教示お願い致します。
    入力フォームはすでに作っていて、テキストボックスA、B、C、Dとその入力されたデータをもとに内容が変わるラベルE、Dがあります。

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim database_DataTable As DataTable
    Dim database_DataRow As DataRow

    database_DataTable = New DataTable()

    database_DataTable.Columns.Add("A", GetType(String))
    database_DataTable.Columns.Add("B", GetType(String))
    database_DataTable.Columns.Add("C", GetType(String))
    database_DataTable.Columns.Add("D", GetType(String))
    database_DataTable.Columns.Add("E", GetType(String))
    database_DataTable.Columns.Add("F", GetType(String))

    Using Reader As New IO.StreamReader("C:\データ.csv", System.Text.Encoding.GetEncoding("Shift-JIS"))
    Dim Line As String = Reader.ReadLine
    Dim Items() As String
    Line = Reader.ReadLine
    Do Until IsNothing(Line)
    Items = Line.Split(",")
    database_DataRow = database_DataTable.NewRow()
    For z = 0 To Items.Length - 1
    database_DataRow(z) = Items(z)
    Next
    database_DataTable.Rows.Add(database_DataRow)
    Line = Reader.ReadLine
    Loop
    End Using

    Dim dv As DataView
    dv = New DataView(database_DataTable)
    database.DataSource = dv

    End Sub

    Private Sub btn_add_Click(sender As Object, e As EventArgs) Handles btn_add.Click

    End Sub

    2018年3月11日 7:08

回答

  • > DataTableにデータを追加して、そのデータをデータグリッドビューへ表示したいのですがどのようなコードにすればいいでしょうか?

    DataTable.NewRow メソッドで元の DataTable から新しい DataRow オブジェクトを生成し、それに DataRow.Item プロパティで各列のデータを設定し、データを設定したら DataTable.Rows.Add メソッドでその DataRow オブジェクトを元の DataTable に追加するということでいかがですか?

    • 回答としてマーク T.K.Tora 2018年3月12日 2:26
    2018年3月11日 7:39

すべての返信

  • > DataTableにデータを追加して、そのデータをデータグリッドビューへ表示したいのですがどのようなコードにすればいいでしょうか?

    DataTable.NewRow メソッドで元の DataTable から新しい DataRow オブジェクトを生成し、それに DataRow.Item プロパティで各列のデータを設定し、データを設定したら DataTable.Rows.Add メソッドでその DataRow オブジェクトを元の DataTable に追加するということでいかがですか?

    • 回答としてマーク T.K.Tora 2018年3月12日 2:26
    2018年3月11日 7:39
  • 回答ありがとうございます。

    その方法でいけそうな気がするのですが、初心者すぎて実際にコード化することができそうにないです。

    厚かましく非常に恐縮ですがコードの例文を見せて頂けないでしょうか?

    よろしくお願いいたします。

    2018年3月11日 7:51
  • 私がレスに書いたキーワードをもとに MSDN ライブラリをググって中を見てください。

    例えば、DataTable.NewRow なら以下のように検索すると、

    以下の記事が一番最初に表示されるはず。それにサンプルコードがあります。

    DataTable.NewRow メソッド ()
    https://msdn.microsoft.com/ja-jp/library/system.data.datatable.newrow(v=vs.110).aspx

    2018年3月11日 9:19
  • ご丁寧にありがとうございます。

    なるほど、挑戦してみます!

    ありがとうございます。

    2018年3月11日 10:17
  • > なるほど、挑戦してみます!

    質問者さんが最初の質問で提示したコードに私が書いたことと同等のことを行っている部分があります。そのあたり理解されているでしょうか? 理解されているのであれば「挑戦」するほどの話ではないと思うのですが・・・

    どこかのサンプルを理解しないままコピペされたということですか? もしそうであれば、まず質問にアップされたコードを一行一行理解するのが先で、今のコードに理解がないまま話はできないと思います。

    2018年3月11日 11:08
  • おっしゃる通りサンプルをコピペして自分なりに弄った結果、MyBase.Load のコードが思った通りに動作したため理解できていない部分が多々あります。

    理解できるよう調べてきます。

    2018年3月11日 11:41
  • >DataTable.NewRow メソッドで元の DataTable から新しい DataRow オブジェクトを生成し、それに DataRow.Item プロパティで各列のデータを設定し、データを設定したら DataTable.Rows.Add メソッドでその DataRow オブジェクトを元の DataTable に追加するということでいかがですか?

    こちらを参考になんとかデータテーブルへの行の追加うまくできました!

    ありがとうございます。

    ですがまた壁にぶつかってしまいました。

    DataTableをCSVファイルとして保存したいのですがうまくいきません。

    今一度ご教示お願い致します。

    2018年3月11日 21:41
  • DataTableをCSVファイルとして保存したいのですがうまくいきません。

    どの辺りがわかりませんか?
    これに関しては一般的に行われていることであり、「DataTable CSV」で検索するとたくさんの例が見つかると思います。
    もし、検索されたページを参考にコードを作成されているのでしたら、どの辺りがわからないのかコードを提示しながら、どのようなエラーが発生しているのかを提示するようにして下さい。わかりやすい質問をすることは、それだけ的確な回答を早く得やすくなります。

    また、このスレッドの質問のタイトルと違う質問になっています。CSV出力に関し、さらにご質問を続ける場合には、新しく質問を立てるようにして下さい。よろしくお願いいたします。


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!


    2018年3月12日 1:01
    モデレータ
  • フォーラム オペレーターの栗下 望です。
    T.K.Tora さん、こんにちは。

    回答とは異なり恐縮ですが
    オペレーターからも一点お伝えさせていただきたいことがあります。

    内容を拝見いたしましたところ、
    Yahoo! JAPAN 知恵袋にも同様の質問を投稿されておりませんでしょうか。

    ・VB初心者です。DataTableをソースにしてDataGridViewで一覧表示
    https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11187435491


    複数のフォーラムにご投稿をいただきますと、情報が分散してしまったり、
    折角調べて回答いただいたのに、他フォーラムではすでに解決済みであった、
    というような状況が生じてしまいます。

    大変恐縮ではございますが、もし同じ投稿者さんでしたら、
    投稿箇所を絞って質問の継続をいただくよう、
    ご検討いただけますでしょうか。

    ご理解の程、どうかよろしくお願いいたします。

    フォーラム利用時の注意点のお知らせです。
    ※初めてご投稿された方を対象にお知らせしています。

    ご利用の際は、下記内容をお守りいただきますと
    情報が寄せられやすくなりますので、ぜひご一読ください。
    ・フォーラムでご質問頂くにあたっての注意点
    ・フォーラムのご利用方法(質問の投稿)について
     ・フォーラムへの回答に関するガイドラインおよびフォーラム運営について(再掲)
    ご意見、ご要望はこちらのフォーラムまで。
     各種設定方法はフォーラム内を [かんたん フォーラム ガイド] で検索してみてください。


    参考になった投稿には回答としてマークの設定にご協力ください
    MSDN/TechNet Community Support 栗下 望


    2018年3月12日 4:14
    モデレータ