У меня есть datatable содержащие пути к файлам, которые я передаю через viewstate (ссылаясь, через ссылку, индекс в этой таблице), желая затем использовать путь из таблицы, чтобы построить HTTP filetransfer. (3 столбца, имя, путь и индекс)
Я не могу успешно восстановить данные, сохраненные в viewstate;
ViewState["varFiles"] = filedata;
(Когда страница изначально построена, то после обратной передачи :)
if (!IsPostBack) { SetupSession(); newpopfiles(); }
else { { if (ViewState["varFiles"] != null) { DataTable filedata = new DataTable(); filedata = (DataTable)Session["varFiles"]; } } }
Из того, что я понимаю, следует отменить filedata как таблицу в той же форме, что и до обратной передачи. Это верно?
При последующем обращении к таблице я получаю исключение с нулевой ссылкой. Есть идеи?
Большое спасибо, Дэн
Похоже, что вы почти там, просто нужно быть немного совместимым с тем же механизмом хранения :)
Бит для сохранения 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
}
}
Session
! =ViewState
. (Проверьте код, почему это наблюдение имеет смысл.)