如何在asp.net中更新数据集内的特定表

时间:2012-08-19 10:37:45

标签: asp.net datatable dataset viewstate

我有一个数据集,其中包含三个表dt1,dt2和dt3(在序列中),现在我维护每个表的viewstate,以保留表的回发,(即我在viewstate中有最新的DataTable),现在问题是我想将dt3的ViewState应用于DataSet中的相应表,即dt3,我在下面做:

dataSet.Tables[(it will be dynamically fetched, say for here its) 0] = ViewState["DataTable" + (it will be dynamically fetched, say for here its) 0]

但是我收到错误,说dataSet.Tables []是只读的。 任何人都可以帮助我如何去做。如果有人需要有关我的问题的更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:2)

你应该使用

DataSet ds = new DataSet();
ds.Tables.Add(YourDataTable);

OR

ds.Tables.AddRange(YourDataTableArray);

要从ds更新ViewState中的现有表格,您可以尝试两种方法。

  1. 使用DataSet方法从DataSet.Tables.Remove("Table");删除表,请注意,您不应该依赖index方法从DataSet中获取表,而应该为表提供一个唯一的名称,以便您可以在需要时获取和删除它们。
  2. 您可以使用循环方法从ViewState DataTable获取行,然后将它们逐个插入DataSet的表中,像这样。

  3. ds.Tables[0].Rows.Clear();
    DataTable dtFromViewState = ViewState["dt"] as DataTable;
    foreach (DataRow row in dtFromViewState.Rows)
      ds.Tables[0].Rows.Add(row.ItemArray);