在asp.net中将datatable存储到viewstate中
我创建了一个DataTable _dt并添加了如下列在asp.net中将datatable存储到viewstate中,asp.net,datatable,ado.net,viewstate,Asp.net,Datatable,Ado.net,Viewstate,我创建了一个DataTable _dt并添加了如下列 _dt.Columns.Add("INDATE", typeof(string)); _dt.Columns.Add("INTIME", typeof(string)); _dt.Columns.Add("OUTTIME", typeof(string)); _dt.Columns.Add("OUTDATE", typeof(string)); 我将_dt存储到Viewstate中: 然后我在数据表中添加了一行,如下所示: DataRow
_dt.Columns.Add("INDATE", typeof(string));
_dt.Columns.Add("INTIME", typeof(string));
_dt.Columns.Add("OUTTIME", typeof(string));
_dt.Columns.Add("OUTDATE", typeof(string));
我将_dt存储到Viewstate中:
然后我在数据表中添加了一行,如下所示:
DataRow _dr = _dt.NewRow();
_dr[0] = string.Format("{0:dd/MM/yyyy}", System.DateTime.Now);
_dr[3] = string.Format("{0:dd/MM/yyyy}", System.DateTime.Now);
_dt.Rows.Add(_dr);
并将DataTable成功绑定到gridview
我的问题是:每当我从Viewstate检索DataTable时
该表还包含DataRow
我不想要数据行。。我只需要具有列字段的表。存储在ViewState中的DataTable对象实例与添加行时使用的对象实例相同。所以,无论你用它做什么,都会在下次取回它时看到 您可以对存储在ViewState中的原始数据表使用,并将行添加到此克隆。这样,您将有两个不同的对象,向第二个对象添加行不会影响第一个对象
ViewState["_table"] = _dt;
DataTable temp = _dt.Clone();
DataRow _dr = temp.NewRow();
_dr[0] = string.Format("{0:dd/MM/yyyy}", System.DateTime.Now);
_dr[3] = string.Format("{0:dd/MM/yyyy}", System.DateTime.Now);
temp.Rows.Add(_dr);
....
DataTable temp = (ViewState["_table"] as DataTable).Clone();
....
请使用适当的按钮{}格式化代码行
DataTable _dtTemp = (DataTable)ViewState["_table"];
ViewState["_table"] = _dt;
DataTable temp = _dt.Clone();
DataRow _dr = temp.NewRow();
_dr[0] = string.Format("{0:dd/MM/yyyy}", System.DateTime.Now);
_dr[3] = string.Format("{0:dd/MM/yyyy}", System.DateTime.Now);
temp.Rows.Add(_dr);
....
DataTable temp = (ViewState["_table"] as DataTable).Clone();
....