DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataTableの列へデータの一括設定

環境/言語:[C#]
分類:[.NET]

既にデータの入っているDataTableに対して、列を追加し、
全ての行に固定文字を設定したいのですが、
一括で列にデータを設定する方法はあるのでしょうか。

やはり、以下のように処理をするしかないのでしょうか。
1)データテーブルへの列追加
2)既存レコード分のループ処理で固定値を設定


よろしくお願いします
■No28654に返信(ヨシヲさんの記事)

データが入る前に列を追加することは出来ませんか?

DataAdapterを使用している場合

tbl = new DataTable();
Da.FillSchema(tbl, SchemaType.Mapped);
tbl.Columns.Add("add1",typeof(string)).DefaultValue = "def";
Da.Fill(tbl);

だいたいこんな感じ。
shuさん

早々の回答、ありがとうございます。

> データが入る前に列を追加することは出来ませんか?
データ取得部が共通化されており、今回の作業では手を付けない方針で
改造作業を行っています。
そのため、データ取得後のDataTableに、他のデータを列として
追加するしかない状況です。
■No28656に返信(ヨシヲさんの記事)

>>データが入る前に列を追加することは出来ませんか?
> データ取得部が共通化されており、今回の作業では手を付けない方針で
> 改造作業を行っています。
> そのため、データ取得後のDataTableに、他のデータを列として
> 追加するしかない状況です。
そうするとDBNullなら既定値としてしまえば全レコードへの設定はいらないですが
DBNull自体を使うなら全レコードへの設定が必要になります。
shuさん

> そうするとDBNullなら既定値としてしまえば全レコードへの設定はいらないですが
> DBNull自体を使うなら全レコードへの設定が必要になります。
回答ありがとうございます。
素直にforeachで各行に設定するしかないようですね。
す。
Defalt値を設定したDataColumnを作成してからAddする方法です

Shuさんのサンプルをお借りして

> tbl = new DataTable();
> Da.FillSchema(tbl, SchemaType.Mapped);
> tbl.Columns.Add("add1",typeof(string)).DefaultValue = "def";
> Da.Fill(tbl);

以下のようにやればテーブルにデーターが入ってる状態でもいけると思います

tbl = new DataTable();
Da.FillSchema(tbl, SchemaType.Mapped);
Da.Fill(tbl);

DataColumn column = new DataColumn("add",typeof(string));
column.DefaultValue = "def";
tbl.Columns.Add(column);

cはあまり使わないのでコードにミスあったらすみません
vbでは上記のやり方で大丈夫でした
■No28666に返信(Miraさんの記事)

> 以下のようにやればテーブルにデーターが入ってる状態でもいけると思います
>
> tbl = new DataTable();
> Da.FillSchema(tbl, SchemaType.Mapped);
> Da.Fill(tbl);
これならFillSchema行は省くことが出来ます。


> DataColumn column = new DataColumn("add",typeof(string));
> column.DefaultValue = "def";
> tbl.Columns.Add(column);
DataColumn のインスタンスを先に作れば既定値埋めてくれるんですね。
やったことありませんでした。
Miraさん

回答ありがとうございます。検証してみます。

問題ないようでしたら、解決済みにさせて頂きたいと思います。
Miraさんの方法で解決できました。
解決済みとさせて頂きます。

shuさん、Miraさん
ありがとうございました。
大変助かりました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板