0
我要存储在ViewState中c# - 如何在ViewState中存储ArrayList?
ArrayList的价值,但我得到了一个错误:
"Type 'System.Data.DataRow' in Assembly 'System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable"
代码:
private void bindGridView()
{
DbConnection.Open();
OleDbCommand DbCommand = new OleDbCommand("select emp_id,emp_name,father_name,gender,designation,department,location from emp_master", DbConnection);
OleDbDataAdapter Dbreader1 = new OleDbDataAdapter(DbCommand);
DataSet dsemer = new DataSet();
Dbreader1.Fill(dsemer);
ArrayList arrList = new ArrayList();
foreach (DataRow dtRow in dsemer.Tables[0].Rows)
{
arrList.Add(dtRow);
}
//Here getting an error
ViewState["ds"] = arrList;
EmpMasterGrid.DataSource = dsemer;
EmpMasterGrid.DataBind();
DbConnection.Close();
}
为什么我需要存储的ArrayList中的ViewState?
通过使用ViewState的,我会选择出口GridView的列Excel中使用下面的代码
private void GetCheckBoxStates()
{
CheckBox chkCol0 = (CheckBox)EmpMasterGrid.HeaderRow.Cells[0]
.FindControl("chkCol0");
CheckBox chkCol1 = (CheckBox)EmpMasterGrid.HeaderRow.Cells[0]
.FindControl("chkCol1");
CheckBox chkCol2 = (CheckBox)EmpMasterGrid.HeaderRow.Cells[0]
.FindControl("chkCol2");
CheckBox chkCol3 = (CheckBox)EmpMasterGrid.HeaderRow.Cells[0]
.FindControl("chkCol3");
CheckBox chkCol4 = (CheckBox)EmpMasterGrid.HeaderRow.Cells[0]
.FindControl("chkCol4");
CheckBox chkCol5 = (CheckBox)EmpMasterGrid.HeaderRow.Cells[0]
.FindControl("chkCol5");
CheckBox chkCol6 = (CheckBox)EmpMasterGrid.HeaderRow.Cells[0]
.FindControl("chkCol6");
ArrayList arr;
if (ViewState["ds"] == null)
{
arr = new ArrayList();
}
else
{
arr = (ArrayList)ViewState["ds"];
}
arr.Add(chkCol0.Checked);
arr.Add(chkCol1.Checked);
arr.Add(chkCol2.Checked);
arr.Add(chkCol3.Checked);
arr.Add(chkCol4.Checked);
arr.Add(chkCol5.Checked);
arr.Add(chkCol6.Checked);
ViewState["ds"] = arr;
}
任何想法?提前致谢。 已编辑!
感谢您的努力,BU还是我得到一个错误 – user2500094
如何添加数据集值,而不是下面这行中的ArrayList arr.Add(chkCol0.Checked); – user2500094