在C#中的循环中存储多个ViewState变量

时间:2019-05-07 14:45:30

标签: c# gridview dynamic datatable viewstate

我的网页中生成了许多动态的gridview。我需要将数据表保存在ViewState中以在页面的其他地方使用。我将表绑定到gridview中,如下所示:

DataTable data = new DataTable();
data.Columns.Add("Technical Name");
data.Columns.Add("Field Name");
for (int i = 0; i < Tables.Count + 1; i++)
{
    if (Tables.Contains(TableName))
    {
        int index = Tables.IndexOf(TableName);
        a = index + 1;
        GridView gridview = (GridView)control.FindControl("gv_table" + a);
        DataRow datarow = data.NewRow();
        datarow["Technical Name"] = LogName;
        datarow["Field Name"] = FieldName;
        data.Rows.Add(datarow);
    }
    else
    {
        if (a != 0)
        {
           ((GridView)control.FindControl("gv_conditiontable" + a)).DataSource = data;                              
           ((GridView)control.FindControl("gv_conditiontable" + a)).DataBind();
           ViewState["grid"+a] = data;
           DataTable dt = (DataTable)ViewState["grid" + a];
       }
       data.Clear();
       Tables.Add(TableName);
       ViewState["Tabletemp"] = Tables;
   }

我将每个数据表添加到循环中的viewstate

ViewState["grid"+a] = data;

但是当我检索ViewState值时

DataTable dt = (DataTable)ViewState["grid2"];

我总是得到最后添加的数据表,而不是存储在ViewState["grid2"]中的数据表。

关于如何解决此问题的任何建议。

0 个答案:

没有答案