我有一个包含文件路径的数据表,我通过viewstate传递(引用,通过链接按钮,此表中的索引),然后想要使用表中的路径来构建HTTP文件传输。 (所以3个字母;名称,路径和索引)
一旦保存在viewstate中,我无法成功检索数据表;
ViewState["varFiles"] = filedata;
(最初构建页面时,然后在回发后:)
if (!IsPostBack) { SetupSession(); newpopfiles(); }
else { { if (ViewState["varFiles"] != null) { DataTable filedata = new DataTable(); filedata = (DataTable)Session["varFiles"]; } } }
根据我的理解,这应该将filedata作为一个表格以与回发之前完全相同的形式拉回来。这是对的吗?
当随后引用表时,我得到一个空引用异常。有什么想法吗?
非常感谢, 丹
答案 0 :(得分:1)
听起来你几乎就在那里,只需要与使用相同的存储机制更加一致:)
将DataTable
保存到您的会话中的位,可能位于OnInit()
或PageLoad()
:
DataTable myDataTable = //... fill it in somehow
Session["varFiles"] = myDataTable;
回发后读取DataTable
的位:
if (!IsPostBack)
{
SetupSession();
newpopfiles();
}
else
{
DataTable filedata = Session["varFiles"] as DataTable;
if (filedata != null)
{
//... do something
}
}