14

このようなデータセットにデータテーブルを追加しています:

DataTable dtImage = new DataTable();
//some updates in the Datatable
ds.Tables.Add(dtImage);

しかし、次回、データテーブルが更新されたときに、それはデータセットに反映されますか?または、それを反映させるためにいくつかのコードを書く必要がありますか?

また、データセットがすでに使用しているデータセットに存在するかどうかをデータセットで確認しています。

if(!ds.Tables.Contains("dtImage"))
    ds.Tables.Add(dtImage);

最初の反復では、ds.Tables.Contains("dtImage")はfalseであるため、ds.Tables.Add(dtImage) データセットにテーブルを追加します。しかし、2回目の反復でds.Tables.Contains("dtImage")は、再びfalseになりds.Tables.Add(dtImage)ますが、エラーがスローされます。

Datatableはすでにこのデータセットに属しています。

データセットに「dtImage」という名前のデータテーブルが含まれていない場合、なぜエラーがスローされるのですか?

更新:ありがとう、その問題は解決されました。plsはこれに答えます:

しかし、次回、データテーブルが更新されたときに、それはデータセットに反映されますか?または、それを反映させるためにいくつかのコードを書く必要がありますか?

4

4 に答える 4

13

TableNameたとえば、コンストラクターを介して、DataTableのプロパティを設定していないと仮定します。

var tbl = new DataTable("dtImage");

名前を指定しないと、自動的に作成され"Table1"、次のテーブルが取得"Table2"されます。

その場合の解決策は、 を提供してTableNameから で確認することContains(nameOfTable)です。

明確にするために:ArgumentExceptionそのDataTableがすでにDataSetに属している場合(同じ参照)を取得します。DataSet に同じ名前の DataTable が既に存在するDuplicateNameException場合は、 を取得します (大文字と小文字は区別されません)。

http://msdn.microsoft.com/en-us/library/as4zy2kc.aspx

于 2012-08-29T13:16:15.723 に答える
6

たとえば、dtimageに必要なtableNameを設定する必要があります

dtImage.TableName="mydtimage";


if(!ds.Tables.Contains(dtImage.TableName))
        ds.Tables.Add(dtImage);

データセットはデータテーブル dtimage のコンテナーであり、dtimage に参照があるため、データセットに反映されます。

于 2012-08-29T13:15:09.620 に答える
6

DataTable に任意の名前を付けるだけです。

DataTable dt = new DataTable();
dt = SecondDataTable.Copy();    
dt .TableName = "New Name";
DataSet.Tables.Add(dt );
于 2015-07-21T15:11:31.113 に答える