Добавление данных в набор данных

Я добавляю datatable к набору данных, подобному этому:

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

Но в следующий раз, когда обновляется datatable, будет ли это отражено в наборе данных? или нам нужно написать код, чтобы он отражался?

Кроме того, я проверяю набор данных, если существующий datatable существует в уже существующем наборе данных:

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

В первой итерации ds.Tables.Contains("dtImage") имеет значение false, поэтому ds.Tables.Add(dtImage) добавляет таблицу в набор данных. Но во второй итерации ds.Tables.Contains("dtImage") снова ошибочно, но ds.Tables.Add(dtImage) выдает ошибку:

Datatable уже принадлежит этому набору данных.

Если набор данных не содержит datatable с именем "dtImage", почему он бросает ошибку?

Обновление: спасибо, эта проблема была решена. Pls ответит на это:

Но в следующий раз, когда обновляется datatable, будет ли это отражается в наборе данных? или нам нужно написать код, чтобы сделать это отражение?

Ответ 1

Я предполагаю, что вы не установили свойство TableName для DataTable, например, через конструктор:

var tbl = new DataTable("dtImage");

Если вы не укажете имя, оно будет автоматически создано с помощью "Table1", следующая таблица получит "Table2" и так далее.

Тогда решением было бы предоставить TableName, а затем проверить с помощью Contains(nameOfTable).

В уточнить: вы получите ArgumentException, если этот DataTable уже принадлежит DataSet (эта же ссылка). Вы получите DuplicateNameException, если в DataSet уже есть DataTable с тем же именем (не чувствительный к регистру).

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

Ответ 2

вам нужно установить имя таблицы, которое вы хотите для своего dtimage, например,

dtImage.TableName="mydtimage";


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

он будет отражен в наборе данных, потому что набор данных является контейнером вашего datimable dtimage   и у вас есть ссылка на ваше dtimage

Ответ 3

Просто укажите любое имя в DataTable.

DataTable dt = new DataTable();
dt = SecondDataTable.Copy();    
dt .TableName = "New Name";
DataSet.Tables.Add(dt );

Ответ 4

DataSet ds = new DataSet();

DataTable activity = DTsetgvActivity.Copy();
activity.TableName = "activity";
ds.Tables.Add(activity);

DataTable Honer = DTsetgvHoner.Copy();
Honer.TableName = "Honer";
ds.Tables.Add(Honer);

DataTable Property = DTsetgvProperty.Copy();
Property.TableName = "Property";
ds.Tables.Add(Property);


DataTable Income = DTsetgvIncome.Copy();
Income.TableName = "Income";
ds.Tables.Add(Income);

DataTable Dependant = DTsetgvDependant.Copy();
Dependant.TableName = "Dependant";
ds.Tables.Add(Dependant);

DataTable Insurance = DTsetgvInsurance.Copy();
Insurance.TableName = "Insurance";
ds.Tables.Add(Insurance);

DataTable Sacrifice = DTsetgvSacrifice.Copy();
Sacrifice.TableName = "Sacrifice";
ds.Tables.Add(Sacrifice);

DataTable Request = DTsetgvRequest.Copy();
Request.TableName = "Request";
ds.Tables.Add(Request);

DataTable Branchs = DTsetgvBranchs.Copy();
Branchs.TableName = "Branchs";
ds.Tables.Add(Branchs);