2014-09-01 53 views
1

我有一個數據表,包含我通過viewstate(引用,通過linkbutton,在此表中的索引)傳遞的文件路徑,想要然後使用表中的路徑來構建HTTP文件傳輸。 (所以3列;名稱,路徑和索引)C#Viewstate - 不能檢索表

我無法成功檢索一次保存在viewstate中的數據表;

ViewState["varFiles"] = filedata; 

(當網頁第一次被構建,然後回傳後:)

if (!IsPostBack) { SetupSession(); newpopfiles(); } 
    else { { if (ViewState["varFiles"] != null) { DataTable filedata = new DataTable(); filedata = (DataTable)Session["varFiles"]; } } } 

據我所知這應該拉回來FILEDATA作爲表完全相同的形式回發之前。它是否正確?

當隨後引用表時,我得到一個空引用異常。有任何想法嗎?

非常感謝, 丹

+0

'Session'!='ViewState'。 (檢查代碼爲什麼這個觀察是有意義的。) – user2864740 2014-09-01 21:39:35

+0

爲什麼你使用會話,如果datatable存儲在視圖狀態 – 2014-09-01 21:40:25

+0

啊。謝謝你們 - 我從前面的例子中提取了這個,並認爲Session是一種從ViewState中提取的方法。 – DanB 2014-09-01 21:44:30

回答

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 
    } 
} 
+0

很好 - 解決了它:)謝謝。 – DanB 2014-09-01 22:42:46

+0

這比Excel VBA更有意義... – DanB 2014-09-01 22:43:16

+0

只有*位*更難:)請注意並接受答案,如果它有幫助。 – demoncodemonkey 2014-09-01 22:49:52