【问题标题】:Passing an object(control) in session from one page to another将会话中的对象(控件)从一个页面传递到另一个页面
【发布时间】:2012-03-30 23:14:51
【问题描述】:

我需要将 Infragistics ultrawebtree 从一个页面传递到另一个页面。我为此使用了 Session("data") ,然后我只是从另一个页面访问它。但是,当我在第二页中将会话值分配给 Infragistics ultrawebtree 控件后,它不会构建树结构并且它是不可见的。我是否对这种方法感到困惑,是否有任何其他方法可以将整个树结构从一个页面传递并显示到另一个页面中。任何帮助表示赞赏

【问题讨论】:

  • 如何传递树形结构?

标签: asp.net session session-state session-variables infragistics


【解决方案1】:

如果有的话,我会将数据源存储在会话而不是树中。将整个控件存储在会话中会产生大量不必要的开销,并限制您在下一页上的每个实现选项。

编辑:您应该能够将树结构导出为 XML 格式,并将 XML 存储在会话中。根据文档,应该有 WriteXmlDoc()WriteXmlString() 函数可用。您还可以使用 ReadXmlDoc()ReadXmlString() 函数在下一页上重新填充树。

这是 UltraWebTree 的 documentation。您将在公共方法部分看到这些方法:

【讨论】:

  • 它是一棵树,我们是按节点添加节点而不是设置数据源。所以我不能将数据源作为会话传递
  • 问题是我在转换后分配会话值后树没有呈现。
  • 您是否在将其提交到会话后立即重定向?
  • 否 实际上我需要在使用 iframe 创建的弹出窗口中加载相同的树。这样我就可以避免递归函数调用来构造树结构,如果可以实现的话。
  • 您说的是 XML 解决方案吗?还有一个 ReadXmlDoc 函数,您可以使用它来重新填充下一页上的树。
【解决方案2】:

只有数据应该存储在会话中。将控件存储在会话中可能会导致问题,因为控件将在页面卸载期间被释放,并且控件在被释放后不应被访问,这是从会话访问控件时会发生的情况。详情请见Why Controls Shouldn't be Stored in Session

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-24
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    相关资源
    最近更新 更多