Web控件TreeView展开无闪烁的一个解决方法

转载 2006年06月06日 13:35:00

已经无数次见到有人提出这个问题了。。。。。  
   
  用.net控件TreeView而展开时不刷新的变通方法主要有以下步骤:  
   
  1。在Page_Load中为你的TreeView添加以下属性,这句话为TreeView添加Click时的回发事件。  
   
  TreeView1.Attributes["OnClick"]   =   @"javascript:   window.setTimeout('__doPostBack(/'TreeView1/',/'/')',   0,  

'JavaScript')";  
   
  2。在.aspx页面文件中添加一个隐藏的Button用来产生TreeView的回发事件:  
   
  <INPUT   id="Button1"   style="DISPLAY:none;"   type="button"   value="Button"   name="Button1"   runat="server"> 

 
   
  这个Button必须为Html控件,并将其转为在服务器端运行。  
  style="DISPLAY:none;"该句用来在页面隐藏Button。  
  在Visual.net的设计界面双击该Button产生以下事件:  
  private   void   Button1_ServerClick(object   sender,System.EventArgs   e)  
  {  
   
  }  
  这里不用添加任何代码,目的是当服务器处理该页面并发送给客户端时产生下面客户端脚本:  
  <script   language="javascript">  
  <!--  
  function   __doPostBack(eventTarget,   eventArgument)   {  
  var   theform   =   document.Form1;  
  theform.__EVENTTARGET.value   =   eventTarget;  
  theform.__EVENTARGUMENT.value   =   eventArgument;  
  theform.submit();  
  }  
  //   -->  
  </script>  
  这段代码用于回应TreeView的Click事件。。。。。。。。。。。。。。。。。。。此代码不用手工添加。。。。。  
   
  3。好。。。大功告成。。。为你的TreeView添加TreeView1_SelectedIndexChange事件:  
  在设计界面,TreeView上右键属性。。。事件。。找到SelectedIndexChange。。。双击。。在cs文件中产生。。  
  private   void   TreeView1_SelectedIndexChange(object   sender,  

Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs   e)  
  {  
   
  }  
  在里面添加测试代码。。。  
   
  Microsoft.Web.UI.WebControls.TreeNode   NewNode=TreeView1.GetNodeFromIndex(TreeView1.SelectedNodeIndex);  
  Response.Write(NewNode.GetNodeIndex());  
   
  。。。。。。。。OK。。。。。。。。。。。。。。。。  
   
   
  测试地址。。。。http://eu.webmatrixhosting.net/ganggang/tree.aspx。。。有点慢大家谅解。。。  
   
  有什么问题请提出。。。。。。呵呵。。。。。  

------------------------------------------------------------------------------------------------------------

关于类似的TreeView展开不提交,点击才提交,我也有一个方法  
  http://eu.webmatrixhosting.net/hgknight/tree.aspx  
   
  方法如下  
   
  可以将autopostback设置成false;  
  在body里添加   <body   onload="initTree()">  
  然后在PageLoad里写:  
                                                string   strTreeName   =   "TreeView1";  
                string   strRef   =   Page.GetPostBackEventReference(TreeView1);  
                string   strScript   =   "<script   language=/"JavaScript/">   /n"   +      
                        "<!--   /n"   +  
                        " function   initTree()   {   /n"   +    
                        " "   +   strTreeName   +   ".onSelectedIndexChange   =    
   
  function()   {   /n"   +    
                        " if   (event.oldTreeNodeIndex   !=    
   
  event.newTreeNodeIndex)   /n"   +    
                        "  
   
  this.queueEvent('onselectedindexchange',   event.oldTreeNodeIndex   +   ','   +    
   
  event.newTreeNodeIndex);   /n"   +    
                        " window.setTimeout('"   +    
   
  strRef.Replace("'","//'")     +   "',   0,   'JavaScript');   /n"   +    
                        " }   /n"   +                  
                        " }   /n"   +      
                        "//   -->   /n"   +  
                        "</script>";  
   
                Page.RegisterClientScriptBlock("InitTree",strScript   );  
  这样就只有你点击的节点更改的时候才提交!  
   
  to   monkey_zeng(未来报告)  
  顺便说一下,慢是由于服务器的问题,你可以在本机测试一下这个方法:)

 

Web控件TreeView展开无闪烁的解决方法

关于类似的TreeView展开不提交,点击才提交hgknight的方法   http://eu.webmatrixhosting.net/hgknight/tree.aspx  方法如下   可以将a...
  • wheee
  • wheee
  • 2004年09月21日 19:41
  • 1479

C#WinForm中TreeView默认展开设置

在Form1_Load事件中添加
  • CLeopard
  • CLeopard
  • 2014年11月24日 16:26
  • 16517

Asp.net TreeView点节点中文字实现菜单的收缩与展开

 一,数据库:构建好你的菜单表.二.前台:只要一个TreeView控件,加上 TreeView1_SelectedNodeChanged 事件.三.后台:       protected void T...
  • thinkscape
  • thinkscape
  • 2007年10月27日 13:47
  • 3892

WPF中展开一个TreeView控件的所有树节点

       在 Windows Form 应用中,我们碰到需要展开一个TreeView 控件的所有树节点的时候很简单,微软已经替我们提供了ExpandAll 方法,我们只要简单的一行代码tv_QTr...
  • ghj1976
  • ghj1976
  • 2007年09月05日 16:34
  • 5697

TreeView展开一个节点后,折叠其它节点

这是在网上找到的方法。前台代码: 关键是:OnTreeNodeExpanded="TreeView1_TreeNodeExpanded" 后台代码:   protected void TreeVie...
  • w809026418
  • w809026418
  • 2009年06月12日 13:32
  • 3779

.net高级web控件treeview

treeview属性和方法介绍  在窗体中添加一个treeview控件,通过treeview对象的属性nodes创建所需的树形结构。  例:建立如下树形结构  窗体中HTML代码为:<iewc:tre...
  • yejunchen
  • yejunchen
  • 2008年04月24日 22:11
  • 536

Qt treeView的展开折叠按钮的设置

Qt tireeView自带的展开折叠按钮是三角形的,实在是太难看了,想要换个风格,在网上找了半天,只是找到 treeView->setStyleSheet(styleThree)这个函数,能解释具体...
  • baidu_28572705
  • baidu_28572705
  • 2017年12月08日 15:34
  • 217

asp.net 树TreeView 默认展开二级菜单

在数据绑定之后进行 foreach (TreeNode item in TreeViewTest.Nodes) { item.Expanded = true; }
  • TianGaojie123abc
  • TianGaojie123abc
  • 2016年04月12日 13:23
  • 980

VC 中 TreeView 全面解析

(一)树控制的主要功能树控制和视(Tree Control&View)主要用来显示具有一定层次结构的数据项,如资源管理器中的磁盘目录等,以供用户在其中进行各种选择。树控制中的每个数据项包括数据项名称的...
  • tg2003
  • tg2003
  • 2008年12月23日 04:53
  • 3296

C#中Winform的Treeview节点"正在展开..."的效果

比较简单的做法,增加一个子节点提示.然后开线程请求真实的子节点,完毕后替换提示节点。 代码如下using System;using System.Collections.Generic;using S...
  • jinjazz
  • jinjazz
  • 2008年05月29日 21:23
  • 3131
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Web控件TreeView展开无闪烁的一个解决方法
举报原因:
原因补充:

(最多只允许输入30个字)