【问题标题】:client side script for treeview events树视图事件的客户端脚本
【发布时间】:2010-12-27 14:23:38
【问题描述】:

我有一个“populateOnDemand”设置为 true 的 Treeview。我希望这个树视图保持它的状态(节点展开/折叠)从一个页面到另一个页面。 Viewstate 不起作用,因为每个页面的树视图都不同。这是我目前的代码。

ASPX 页面:

<asp:TreeView
          ID="arbre"
          EnableViewState="true"
          PopulateNodesFromClient="true"
          runat="server" />

后面的代码:

Protected Sub arbre_TreeNodeCollapsed(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles arbre.TreeNodeCollapsed
    CType(Session("listeNoeudsOuverts"), Hashtable)(e.Node.Value) = True
End Sub

Protected Sub arbre_TreeNodeExpanded(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles arbre.TreeNodeExpanded
    CType(Session("listeNoeudsOuverts"), Hashtable)(e.Node.Value) = False
End Sub


Protected Sub arbre_TreeNodePopulate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs) Handles arbre.TreeNodePopulate
    // code to populate nodes
    CType(Session("listeNoeudsOuverts"), Hashtable)(e.Node.Value) = True
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Session("listeNoeudsOuverts") Is Nothing Then
        Session("listeNoeudsOuverts") = New Hashtable()
    End If
    // other stuff
End Sub

这很好用,但我希望每次用户展开或折叠节点时都可以避免回发。我知道我可以将 EnebleClientScript 设置为 true 并在 Javascript 中管理事件客户端,但我将无法再使用我的会话变量。有没有办法做到这一点?

谢谢

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    我会在一定程度上回答自己。

    我做了一些测试和研究,EnableClientScript 默认为 true,实际上意味着展开和折叠动作是在客户端处理的,由 .Net 框架自动生成的 Javascript 代码。你不能编辑它。

    显然,如果您需要在用户展开或折叠阳极时添加自定义操作,则必须使用 TreeNodeExpanded 和 TreeNodeCollapsed 事件,就像我在上面所做的那样,并且无法避免回发,因为它们是在服务器端触发的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-02
      • 2012-05-01
      • 2011-05-07
      • 1970-01-01
      • 2010-12-19
      • 1970-01-01
      • 2017-04-01
      • 2010-09-12
      相关资源
      最近更新 更多