来自会话内存的DataTable没有列

时间:2011-01-18 15:33:14

标签: c# asp.net session-variables

我试图检索我放入会话变量的数据表,但是当我这样做时,表示没有列......

我以前在VB.NET中做过这个,我现在正在使用C#,它运行得很好,据我所知,除了显而易见的语法更改之外,代码没有任何变化。

编辑:

当我查看数据可视化窗口时,dt(第2部分)变量具有正确的数据,但我注意到与数据表关联的其他属性是绝对的。当我用鼠标将鼠标悬停在一个看起来很正常的数据表上时,它看起来如下:“dt ----- {System.Data.DataTable}”但在我正在处理它的类中看起来像“dt ----- {}”。此外,在我将会话变量返回到dt之后我克隆它(dtclone = dt.clone();)并且数据visulizer中的克隆是空的....究竟是什么!

编辑2:

我现在也尝试将第一个数据表转换为数据集,将其放入会话变量中,然后将其恢复为类中的数据表。

我开始怀疑它是否是一个问题:

    dt.Load(sqlReader);

数据确实在数据集可视化工具中显示,但在克隆后不会出现。

以下代码。

非常欢迎所有帮助!

提前致谢

克里斯

1)webhandler中的SQL命令,其结果填充要放入会话变量的数据表。

    DataTable dt = new DataTable();

    SqlDataReader sqlReader= default(SqlDataReader);        
    SqlDataAdapter sqlAdapter = new SqlDataAdapter();

    sqlReader = storedProc.ExecuteReader(CommandBehavior.CloseConnection);

    dt.Load(sqlReader);
    System.Web.HttpContext.Current.Session["ResultsTable"] = dt;

2)在表中执行计算的类中的部分代码:

    DataTable dt = (DataTable)HttpContext.Current.Session["ResultsTable"]; 

1 个答案:

答案 0 :(得分:0)

设置Session Var后你是否调用了DataTable dispose? 因为如果你这样做,解决方案是这样的:

System.Web.HttpContext.Current.Session["ResultsTable"] = dt.Copy();