こんにちは。
最近開発から外れていましたが、少し開発をしたので残しておこうと思いました。
内容はデータグリッドビューの中身をデータテーブル(DataTable)に変換です
データテーブルをデータグリッドビューにバインドするのは色んなところに載っています。
しかし、その反対は意外に少ないようなので、
備忘録として載せておきます。
DataGridViewをDataTableに格納するソース
まず、データグリッドビューの列をDatatableに作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/// <summary> /// データグリッドビューのカラムクローンをデータテーブルへ作成 /// </summary> /// <param name="dt">クローン作成先</param> /// <param name="targetDtgrdvw">クローン作成元</param> /// <returns></returns> private DataTable DataGridViewClone(DataTable dt, DataGridView targetDtgrdvw) { //カラム件数分繰り返す for (int i = 0; i < targetDtgrdvw.ColumnCount; i++) { dt.Columns.Add(targetDtgrdvw.Columns[i].HeaderText); } return dt; } |
そしてデータグリッドビューのデータをデータテーブルに格納します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/// <summary> /// 受け取ったデータグリッドビューをDataTableに格納してして返す /// </summary> /// <param name="dtgrdvwTarget">テーブルにしたいデータグリッドビュー</param> /// <param name="dtResult">データグリッドビューの値の抽出先</param> /// <returns></returns> public DataTable retDtgrdvwValue(DataGridView dtgrdvwTarget, DataTable dtResult) { for (int row = 0; row < dtgrdvwTarget.Rows.Count - 1; row++) { DataRow drResult = dtResult.NewRow(); for (int col = 0; col < dtgrdvwTarget.Columns.Count; col++) { drResult[col] = dtgrdvwTarget.Rows[row].Cells[col].Value; } dtResult.Rows.InsertAt(drResult, row); } return dtResult; } |
メソッドを使った処理の例文です。
1 2 3 4 5 6 7 |
DataTable dt = new DataTable(); //データグリッドビューの列コピー dt = DataGridViewClone(dt, dataGridView1); //データグリッドビューをテーブルに取得 dt = retDtgrdvwValue(dataGridView1, dt); |
意外とDataTableに取込んでDBへ更新や入力チェックしたいとき
などがあるので、便利かなと思います。
※NULL値がDataGridViewに入っていた場合の考慮がされていません。
必要に応じて、NULLの場合は0を入れるか””を入れるようにして下さい。
C#アプリ開発 メールお知らせアプリ
開発案件の経験は2案件ほどで、ほとんど経験ありません。
そんな私が独学でプログラミングの勉強をしてきました。
そこで...
おすすめのプログラミングスクール めざせ就職・年収アップ!
プログラミングを独学でされている人は意外と多いです。
ただ、プログラミングの独学は簡単にはいきません。
自分だけの力...
プログラミングの独学とはエラーとの闘い
プログラミングを勉強し始めた初心者の方はつまづくことが多いと思います。
私も最初はエラーが出るたびにいちいちビビッて、意味...
・【VB.NET】DataGridViewのデータをDataTableに格納する方法について
https://teratail.com/questions/44329
・DataGridにDataTableを表示する
http://d.hatena.ne.jp/theze/20120723/1343025026
https://teratail.com/questions/44329
・DataGridにDataTableを表示する
http://d.hatena.ne.jp/theze/20120723/1343025026