我有一個帶有按鈕的頁面,當我點擊它時,它從數據庫中檢索數據並將其存儲到數據表中並將其綁定到GridView。該數據表存儲在Session變量中。我也有一個按鈕,可以將數據表中的指定列導出到excel文件,但是當我第二次單擊導出按鈕時,出現以下錯誤:爲什麼我在這裏失去了Session?
未將對象引用設置爲對象的實例。
似乎在這條線的情況發生:
dtExport.Columns [ 「業務」]的ColumnName = 「許可」;我想我知道爲什麼,原來的列被稱爲「業務」,但是當我導出時,我想導出列標題作爲被許可方,所以我將ColumnName更改爲「被許可方」;但是,但是,當我第二次調用Export時,它再次查找dtExport.Columns [「Business」],因此它會引發錯誤。我是否需要檢查列是否已被重命名爲解決此問題還是有其他方法?
這裏是做出口的代碼:
private void ExportExcel()
{
DataTable dtExport = Session["dtSearchResults"] as DataTable;
dtExport.Columns["Business"].ColumnName = "Licensee";
List<int> columnSelect = new List<int>();
columnSelect.Add(dtExport.Columns["Licensee"].Ordinal);
columnSelect.Add(dtExport.Columns["Name"].Ordinal);
columnSelect.Add(dtExport.Columns["Address"].Ordinal);
columnSelect.Add(dtExport.Columns["City"].Ordinal);
columnSelect.Add(dtExport.Columns["State"].Ordinal);
columnSelect.Add(dtExport.Columns["Zip"].Ordinal);
int[] ColList = columnSelect.ToArray();
GridViewExportUtil.ExportDetails(dtExport,
ColList,
GridViewExportUtil.ExportFormat.Excel,
string.Format("{0}_{1}-{2}-{3}{4}",
"SearchResults",
DateTime.Now.Month,
DateTime.Now.Day,
DateTime.Now.Year,
".xls"));
}
當您更改的ColumnName,它persit,即使你從會話中獲取一個新的DataTable一遍嗎?
這是否有任何性能或開銷的打擊? – Xaisoft 2009-01-09 15:43:03
當然,但只有下載的按鈕點擊才能出色,這是相對罕見的。取決於數據表的大小。 – Shawn 2009-01-09 15:47:51