在一个页面中有一个TreeView控件,当选中对应的节点时根据路径跳转到对应的页面,这样在跳转页面的同时TreeView控件也存在刷新的过程,请大家各位帮帮忙。

解决方案 »

  1.   

    使用局部刷新,updatepannel,将TreeView控件放到里面
      

  2.   

    一个变态的方法,慎用!
    包含Treeview控件的部分用一个iframe替换,同时此iframe src="ChannelTree.aspx"
      <iframe id="TreeView" frameborder="0" src="ChannelTree.aspx" width="0" height="0"></iframe>此ChannelTree.aspx 只负责展现,没有服务器端事件
    ChannelTree.aspx 前台:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChannelTree.aspx.cs" Inherits="ChannelTree" %><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:TreeView ID="TreeView1" runat="server" ShowLines="True">
                <SelectedNodeStyle BackColor="Gainsboro" BorderColor="White" />
            </asp:TreeView>
        </form>
    </body>
    </html>ChannelTree.aspx 后台    protected void Page_Load(object sender, EventArgs e)
        {
            TreeNode treeNodeRoot = new TreeNode("导航", "-1");
            treeNodeRoot.NavigateUrl = string.Format("javascript:void(Navigator('{0}'))", "-1");
            TreeNode treeNode;
            NavigatorHelper nvh = new NavigatorHelper();
            foreach (KeyValuePair<string, string> de in nvh.GetNavigator())
            {
                treeNode = new TreeNode();
                treeNode.Text = de.Value;
                treeNode.Value = de.Key;
                treeNode.NavigateUrl = string.Format("javascript:void(Navigator('{0}'))", de.Key);
                treeNodeRoot.ChildNodes.Add(treeNode);
            }
            this.TreeView1.Nodes.Add(treeNodeRoot);
            this.TreeView1.ExpandAll();
        }    public override void VerifyRenderingInServerForm(Control control)
        {    }
        protected override void Render(HtmlTextWriter writer)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">");
            sb.AppendLine("<tr>");
            sb.AppendLine("<td align=\"left\" valign=\"top\">");
            sb.AppendLine("<select name=\"DropDownListNavigator\"  id=\"DropDownListNavigator\">");
            sb.AppendLine("<option selected=\"selected\" value=\"ChannelName\">按类型导航</option>");
            sb.AppendLine("</select> ");
            sb.AppendLine("</td>");
            sb.AppendLine("</tr>");
            sb.Append("</table>");
            writer.Write(sb.ToString());
            this.TreeView1.RenderControl(writer);
        }
      

  3.   

    不好意思,搞混了,
    用TreeView控件用一个Div替换,同时ajax的方式请求ChannelTree.aspx 填充此Div
    在主页面上定义Navigator方法不用iframe !