Asp.net treeview事件的客户端脚本
我有一个“populateOnDemand”设置为true的树视图。我希望此树视图将其状态(节点展开/折叠)从一个页面切换到另一个页面。Viewstate不工作,因为每个页面的树视图都不同。这是我目前的代码 ASPX页面:Asp.net treeview事件的客户端脚本,asp.net,Asp.net,我有一个“populateOnDemand”设置为true的树视图。我希望此树视图将其状态(节点展开/折叠)从一个页面切换到另一个页面。Viewstate不工作,因为每个页面的树视图都不同。这是我目前的代码 ASPX页面: <asp:TreeView ID="arbre" EnableViewState="true" PopulateNodesFromClient="true" runat="server" /
<asp:TreeView
ID="arbre"
EnableViewState="true"
PopulateNodesFromClient="true"
runat="server" />
这很好,但是我希望每次用户展开或折叠节点时都能避免回发。我知道我可以将EnebleClientScript设置为true,并在Javascript中管理事件客户端,但我将无法再使用会话变量。有没有办法做到这一点
谢谢我会在一定程度上回答自己的问题 我做了一些测试和研究,EnableClientScript默认为true,实际上意味着扩展和折叠操作由客户端处理,由.Net framework自动生成的Javascript代码处理。你不能编辑它 显然,如果您需要在用户展开或折叠时添加自定义操作,则必须使用TreeNodeExpanded和TreeNodeCollapsed事件,就像我上面所做的那样,并且无法避免回发,因为它们是在服务器端触发的
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