【发布时间】: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