0

3つのテーブルdt1、dt2、およびdt3(シーケンス内)を含むデータセットがありますが、ポストバック全体でテーブルを保持するために、すべてのテーブルのビューステートを維持しています(つまり、ビューステート内に最新の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[]が読み取り専用であるというエラーが発生します。誰かが私がどのように行こうかを助けることができますか?誰かが私の質問についてもっと情報が必要な場合は私に知らせてください。

4

1 に答える 1

2

あなたは使用する必要があります

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

また

ds.Tables.AddRange(YourDataTableArray);

dsから既存のテーブルを更新するには、ViewState2つの方法を試すことができます。

  1. DataSetメソッドを使用してテーブルを削除DataSet.Tables.Remove("Table");します。DataSetからテーブルをフェッチするアプローチに依存するのではindexなく、必要なときにテーブルをフェッチして削除できるように、テーブルに一意の名前を付ける必要があることに注意してください。
  2. ループアプローチを使用して、から行をフェッチし、ViewState DataTableそれらをDataSetのテーブルに1つずつ挿入できます。このようなものです。

ds.Tables[0].Rows.Clear();
DataTable dtFromViewState = ViewState["dt"] as DataTable;
foreach (DataRow row in dtFromViewState.Rows)
  ds.Tables[0].Rows.Add(row.ItemArray);
于 2012-08-19T10:44:18.847 に答える