Добавление данных в набор данных
Я добавляю 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);