我已經使用數據表填充了一個列表框。如何從列表框中獲取數據表
在另一種方法中,我必須從列表框中檢索數據表。
Datatable dt = (DataTable)lstExample.DataSource;
拋出一個錯誤,該Datatable dt is null
我對C#的工作ASP.Net
我已經使用數據表填充了一個列表框。如何從列表框中獲取數據表
在另一種方法中,我必須從列表框中檢索數據表。
Datatable dt = (DataTable)lstExample.DataSource;
拋出一個錯誤,該Datatable dt is null
我對C#的工作ASP.Net
如果你正在嘗試做這回發,然後DataTable將不再存在。如果您想在Postback上訪問它,或者只需再次點擊數據庫,則需要將其保存在ViewState或Session中。
例如:
protected override Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
DataTable tbl = GetData();
lstData.DataSource = tbl;
lstData.DataBind();
// store in viewstate
ViewState["data"] = tbl;
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
DataTable tbl = (DataTable)ViewState["data"];
}
我非常不喜歡保存到ViewState。如果將它保存到Session中,請確保檢查它不爲空,並根據需要重新加載並重新插入到數據存儲區的Session中。 – 2010-10-22 14:34:26
謝謝..我在會話中存儲了數據表.. – 2010-10-22 14:38:18
這實際上取決於您使用的數據量和會話狀態類型。對於少量的記錄存儲在視圖狀態不會那麼糟糕。如果您正在服務器場中運行並使用SQL會話狀態......則只需再次點擊數據庫就可以了。 – Dismissile 2010-10-22 14:45:25
刪除()
從lstExample.DataSource()
是您嘗試檢索從列表框中同一頁面事件生命週期範圍內的數據源?如果這是從最初將數據表綁定到lstExample的單獨回發,那麼您將不再有權訪問數據表,因爲lstExample是從ViewState重新創建的。 – 2010-10-22 14:32:21