大家好,我在2.0TreeView在使用中,页面加载时候就把数据库的一些数据添加了进去TreeView中,但是现在有个问题就是每次点击里面的节点,页面都要刷新一次啊,展开的时候也是刷新,有什么办法可以不用老是刷新页面啊?网上找了很久都看得不是很明白,希望大家指点指点,谢谢

解决方案 »

  1.   

    下ajax组件,安装将TreeView放在ajax组件里面就可以了。
      

  2.   

    不会吧,我这边也用的是2.0的,怎么从来都没有出现过你说说的问题呢,要实现不刷新可以用AJAX
      

  3.   

    一般点击上父级节点是不刷新的,
    如果刷新了,可设置这个节点:
    node1.SelectAction = TreeNodeSelectAction.Expand;

    node1.SelectAction = TreeNodeSelectAction.None;
      

  4.   

    还有绑定的时候,看看是否放在!IsPostBak里!!
      

  5.   

    最方便就是 把这个树 放在iframe中...
      

  6.   

    哦,谢谢大家的回答,那样到底是放在ajax里面好点,还是使用dtreejs的树好点啊,我主要是使用点击后把这个名字赋值给一个textbox就可以了
      

  7.   

    node1.SelectAction = TreeNodeSelectAction.None; 
      

  8.   

    我觉得JS好   毕竟现在是敲代码,你用JS写应该更有提高
      

  9.   

    ajax简单.但要配置.js担心浏览器问题.
    各有利弊.
    Up
      

  10.   

    谢谢,用这个node1.SelectAction = TreeNodeSelectAction.None; 写了是不刷新但是也展开不了啊,
    还有就是我刚刚下载了dtree看了一下,但是我不是很明白,不如我想单击tree的时候发送一个单击动作,把这个点击的值赋值给一个textbox,这样我不是很明白javascript跟C#的语法不知道怎样和在一起啊,谢谢
      

  11.   

    刚刚安装了ajax,tools里面有很多工具啊,怎样把treeview放在ajax里面就可以啊?不明白。。
      

  12.   


    node1.SelectAction = TreeNodeSelectAction.Expand; 
      

  13.   

    TreeNode oTN = new TreeNode("ItemText, "Id");
    oTN.SelectAction = TreeNodeSelectAction.Expand;
    TV.Nodes.AddAt(i, oTN);
      

  14.   

    TreeView以及GridView等许多控件在2005年微软还没有开发出来asp.net ajax的时候就已经具有ajax功能(当让那个时候是使用客户端回调技术实现的)。随便举个msdn上的例子:http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.treeview.enableclientscript.aspx很多东西早在几年前就有了,现在都过时了确还被大多数所不理解,可见asp.net确实不是一个理想的web工具。
      

  15.   

    另外要注意你设置的服务器端事件。许多控件,如果你没有捕获服务器端事件,asp.net往往就不会回发,而一旦你设置了asp.net才会回发。同时也去看看msdn的示例程序:http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.treeview.populatenodesfromclient.aspx
      

  16.   

    treeview是无限级无刷新的,asp.net的许多控件原本也是,而且那些也还都不使用asp.net ajax就可以实现无刷新。只是编程方式跟入门书上的的简单例子不一样,所以入门书就不去讲了,于是似乎知道的人也就少了。你只有自己去读 msdn。
      

  17.   

    因为它是服务器控件,所以必须是要刷新的。不想刷新的话可以装Ajax控件
      

  18.   

    放到updatepanel中就行了!http://www.mybuffet.cn
      

  19.   

    利用 NET内置Ajax无刷新控件<asp:ScriptManager ID="ScriptManager1" runat="server">  <%-- 由这个控件生成--%>
            </asp:ScriptManager>  
           
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">      <%-- 将TreeView放到这个容器中--%>
                <ContentTemplate>
                     <asp:TreeView ID="tv" runat="server">
                    </asp:TreeView>
               </ContentTemplate>
            </asp:UpdatePanel>后台:
      private void bindTV()
            {
                using (SqlConnection con = new SqlConnection())
                {
                    con.ConnectionString = "server=.;database=db_job;uid=sa;pwd=sa;";
                    con.Open();
                    SqlCommand cmd = new SqlCommand("select * from 学生表",con);
                    SqlDataReader read = cmd.ExecuteReader();
                    TreeNode root = new TreeNode("学生信息");                while(read.Read())
                    {
                        TreeNode nName = new TreeNode();
                        nName.Text = read["id"].ToString();
                        TreeNode nSex = new TreeNode();
                        nSex.Text=read["name"].ToString();
                        nName.ChildNodes.Add(nSex);
                        root.ChildNodes.Add(nName);                }
                    tv.Nodes.Add(root);
                   
                }
            }
      

  20.   

    可以用vs里面的treeview控件啊、、 是不用每次都刷新吧、、
      

  21.   

    ggwoai兄台好像说得比较清楚点啊,自己试了下但是记过在源代码把那些代码复制过去了,在回到设计视图的时候显示创建控件时出错-scriptmamager1
    未知的服务器标记"asp:scriptmamager"
    创建控件时出错-updatepanel1
    未知的服务器标记"asp:updatepanel"我好像已经安装了ajax一堆控件在左边啦,奇怪????????????????
      

  22.   

    55555555555555555555555555555555555555555555555555555还是刷新个不停,再加分,200分另外一贴求助Dtree用法,看了还是用JavaScript 树好了,谢谢大家http://topic.csdn.net/u/20091227/12/342e82be-5402-40ec-88b9-933b50128f7e.html
      

  23.   


    这样做的话。。我右边的greeview的数据出不来啊 。。greeview的数据时根据点击treeview的字节点获得的