【问题标题】:Better than TreeView比 TreeView 更好
【发布时间】:2010-10-18 13:18:05
【问题描述】:

我将大量数据绑定到 TreeView 控件,因为数据是自然的类别层次结构。问题是它有很多。通过仅绑定出现在可见树中的那些节点,我设法消除了很多开销,但这仍然在 ViewState 等中留下了很多内容。

请问有没有人有改善这种性能问题的方法或替代控制?

我正在考虑尝试继承 TreeView 控件并将其 viewstate 值转储到 Sesssion 并返回 - 但这是一个相当不错的 hack,我现在真的没有时间......

【问题讨论】:

    标签: c# asp.net performance data-binding treeview


    【解决方案1】:

    是的......您可以使用按需加载或延迟加载树视图项

    1- 仅在 Window Explorer 中显示根级节点。

    2-当用户点击一个节点时,只获取子节点并显示。

    这样,您将只看到用户实际请求的那些节点。

    你可以给一个复选框,上面写着'SHOW Whole Tree EXPANDED',显然需要更多时间才能显示出来。

    您也可以实现节点搜索功能,但请记住树是从图形中指定的,因此在查找(BFS 或 DFS)之类的节点时使用适当的 grpah 算法

    您也可以缓存节点的结果,但这应该只在您的树本身不用于层次结构更新的情况下进行。

    【讨论】:

    • 谢谢,但这是代码已经在做的事情,并且仍然会产生相当多的视图状态!
    【解决方案2】:

    除了在展开时动态加载树视图的解决方案,尝试ViewStateCompression 来增强视图状态,使用 Asp.net Caching 进行输出缓存,或者通过使用生成键(如“tree_”&)动态添加对象到缓存来缓存对象父母。缓存对象在会话之间共享,因此它会更有帮助。 希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2015-07-08
      • 2021-09-25
      • 1970-01-01
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 2017-06-26
      • 2011-01-13
      • 2010-10-17
      相关资源
      最近更新 更多