在页面左边有个TreeView控件,如何实现单击TreeView得节点,页面右边得内容随之变换,TreeView的节点是从XML中读出来的,我想点击TreeView的节点,右边的页面替换为新的***.aspx,内容也随之改变,但为什么我要点两次以后才实现右边的页面替换,而且只是第一次点时要点两次,以后点一次就可实现页面替换,小弟初学找不出原因请各位高手指点下,我在这里非常的感谢!谢谢! 

解决方案 »

  1.   

    后台代码如下:请各位高手帮忙看下
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class tree : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }        protected void TreeView1_SelectedNodeChange(object sender, EventArgs e)
        {
            if (TreeView1.SelectedNode.Value == "钎焊刀具")
            {
                TreeView1.SelectedNode.NavigateUrl = "bottom.htm";//在前台treeview属性中已设定target
               
            }
        
        }
    }
      

  2.   

    前台代码:节点数据由XML导入
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="tree.aspx.cs" Inherits="tree" Debug="true" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server" >
        <div>
            <asp:TreeView ID="TreeView1" runat="server"  DataSourceID="XmlDataSource1" ImageSet="Arrows"  OnSelectedNodeChanged="TreeView1_SelectedNodeChange" ExpandDepth="1" Target="right">
                <ParentNodeStyle Font-Bold="False" />
                <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
                <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px"
                    VerticalPadding="0px" />
                <NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black" HorizontalPadding="5px"
                    NodeSpacing="0px" VerticalPadding="0px" />
                
            </asp:TreeView>
            <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/App_Data/ProductMenu.xml">
            </asp:XmlDataSource>
            <asp:Label ID="Label1" runat="server" Height="37px" Text="Label11111111" Width="100px"></asp:Label>
            <asp:Label ID="Label2" runat="server" Height="36px" Text="Label222222" Width="88px"></asp:Label></div>
        </form>
    </body>
    </html>
      

  3.   

    protected void TreeView1_SelectedNodeChange(object sender, EventArgs e)
        {
            if (TreeView1.SelectedNode.Value == "钎焊刀具")
            {
                TreeView1.SelectedNode.NavigateUrl = "bottom.htm";应该是这个问题吧,触发SelectedNodeChange事件后,SelectedNode的url被改变,但此时并未跳转,再点击时才会跳到这个URL
              
      

  4.   

    在SelectedNodeChange事件里,TreeView1.SelectedNode.NavigateUrl赋值以后,加上右侧页面的跳转语句
      

  5.   

     Response.Write("<script language=javascript>parent.main.location.href(bottom.htm')</script>");
      

  6.   

    楼主为什么不在绑定TreeView时就给NavigateUrl属性赋值呢
    还要这么麻烦在事件中赋值
      

  7.   

    树是在左边,显示页面在右边,是两个Frame,小弟初学不知道用什么跳转语句刷新右边的页面,请高手详细说下,最好能有代码
      

  8.   

    是frame的话,js:
    document.getElementById("frameid").src=要跳转的url;
      

  9.   

    我的意思是 在绑定TreeView的数据源时
    就给NavigateUrl属性赋对应的url值
    target为你要跳转的frame的id值
      

  10.   


    foreach (DataRowView drv in dv)
            {  
                TreeNode tn = new TreeNode();
                // 设置树的节点Text值和value值
                  tn.Text = "aaa";
                tn.Value = "aaa.aspx";
                tn.NavigateUrl = tn.Value;
                tn.Target = "FrmMain";
                tn.SelectAction = TreeNodeSelectAction.SelectExpand;
            }
    this.tvTree.Nodes.Add(tn);这个从数据库查询出数据,然后遍历,把值赋给treenode上,点击就自动跳转
    例子很简单,能明白就可以了
    不知道是不是楼主所要
      

  11.   

    这个我知道,我以前用JAVA开发过,但调用SelectedNodeChange事件是在后台,不认上面这个语句,如果加在前台页面里,我怎么调用这个语句,我用开发语言是C#
      

  12.   

    用page.clientscript.registerstartupscript输出js
      Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>document.getElementById("frameid").src=要跳转的url;</script>", true);
      

  13.   

    刚试了下,不是在同一个页面得不到要跳转的frameid
      

  14.   

    那就在绑定事件里加吧,
    if (TreedNode.Value == "钎焊刀具")
    {
         TreeNode.NavigateUrl = "bottom.htm";
      

  15.   

            if (TreedNode.Value == "钎焊刀具")
            {
                Response.Redirect("bottom.htm");
            } 
      

  16.   

    查看事件是否正确,还可以在绑定Node的Text时,直接将HTML绑上去
    例如TreeNode node=new TreeNode();
    node.Value="Google";
    node.Text="<a href='http://www.google.cn'>Google</a>"
      

  17.   

    难道楼主在绑定TreeView时就绑定NavigateUrl 
    这样不可以吗。。
    非要在SelectedNodeChange中判断赋值吗?
    还是数据库设计问题?
      

  18.   

    我是用XML数据导入的,在treeview控件中设置了NavigateUrl和Target但是也不行