CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

treeview闪烁问题?急!!

楼主yy6439()2003-08-01 13:41:59 在 .NET技术 / ASP.NET 提问

我按以下方法做,点击treeview屏幕不会闪烁,但onSelectedIndexChange事件却无效,该怎么办?  
   
  可以将autopostback设置成false;      
  在body里添加     <body     onload="initTree()">      
  然后在PageLoad里写:      
  Dim   strTreeName   As   String   =   "Treeview1"  
                          Dim   strRef   As   String   =   Page.GetPostBackEventReference(Treeview1)  
   
                          Dim   strScript   As   String   =   "<script   language='JavaScript'>   "   &   vbCrLf   _  
                          &   "<!--   "   &   vbCrLf   _  
                          &   " function   initTree()   {   "   &   vbCrLf   _  
                          &   " "   &   strTreeName   &   ".onSelectedIndexChange   =   function()   {   "   &   vbCrLf   _  
                          &   " if   (event.oldTreeNodeIndex   !=   event.newTreeNodeIndex)   "   &   vbCrLf   _  
                          &   " this.queueEvent('onselectedindexchange',   event.oldTreeNodeIndex   +   ','   +   event.newTreeNodeIndex);   "   &   vbCrLf   _  
                          &   " window.setTimeout('"   &   strRef.Replace("'",   "\'")   &   "',   0,   'JavaScript');   "   &   vbCrLf   _  
                          &   " }   "   &   vbCrLf   _  
                          &   " }   "   &   vbCrLf   _  
                          &   "//   -->   "   &   vbCrLf   _  
                          &   "</script>"  
   
   
                          Page.RegisterClientScriptBlock("InitTree",   strScript)    
  这样就只有你点击的节点更改的时候才提交!      
  问题点数:30、回复次数:16Top

1 楼BabyTree(小树)回复于 2003-08-01 13:48:29 得分 0

不可避免!Top

2 楼yy6439()回复于 2003-08-01 14:12:41 得分 0

upTop

3 楼ylaoei(♂稻草人.net)回复于 2003-08-01 14:24:08 得分 0

关注!高手快来呀!Top

4 楼DoNotTomcat(TOM)回复于 2003-08-01 14:34:18 得分 0

帮你顶。Top

5 楼showjun(俊俊)回复于 2003-08-01 15:42:50 得分 0

我也顶Top

6 楼hgknight(江雨.net)回复于 2003-08-01 16:08:22 得分 0

上面的方法没错,应该是你其他地方的问题Top

7 楼yy6439()回复于 2003-08-01 16:22:31 得分 0

to   hgknight(江雨.net)  
  我用的就是csdn上的第二种方法,屏幕不会闪烁,但onSelectedIndexChange事件也无效,从js的内容看,应该是替换了onSelectedIndexChange事件,是不是onSelectedIndexChange应该全部在js脚本中写呢?但我需要的是在服务器端的事件,怎么办?Top

8 楼zhiyue(响沙)回复于 2003-08-01 16:37:31 得分 0

关注Top

9 楼hgknight(江雨.net)回复于 2003-08-01 16:47:20 得分 30

我知道,第二种方法就是我写的  
  不知道你那儿为什么会出问题  
  你新建一个页面测试一下Top

10 楼oceanyan(ocean_Yan)回复于 2003-08-01 17:04:16 得分 0

第2种方法在哪里?我也遇到了一样的问题我是把treeview在帮定时全不展开来减少用户的  
  点击次数的,实在是不能忍     那为大哥解决了   给点提示啊!Top

11 楼yzhfirst(asdf)回复于 2003-08-01 17:09:20 得分 0

试试下面两种方法-----------转载-----  
  已经无数次见到有人提出这个问题了。。。。。      
     
  第一种。。。。。      
     
  用.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());      
     
     
  测试地址。。。。      
  http://eu.webmatrixhosting.net/ganggang/tree.aspx。。。      
  有点慢大家谅解。。。      
     
     
  第二种。。。。。      
     
  关于类似的TreeView展开不提交,点击才提交,我也有一个方法。。。此乃hgknight方法也。。。。      
     
  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     );      
     
  这样就只有你点击的节点更改的时候才提交!      
     
     
  个人认为。。。。hgknight(江雨.net)的方法要更好一点。。。      
     
  虽然原理相似。。。但我的用的是Click事件。。这导致。。。点击同一节点时也会回发页面。。。。虽然这时不会触发。。。。SelectedIndexChange事件。。。这一点需要改进。。。。。  
  Top

12 楼yy6439()回复于 2003-08-02 10:27:44 得分 0

to   hgknight(江雨.net)  
   
  我已经新建了页面测试,还是不行,你把treeview的autopostback属性设为false,treeview就无法响应服务器端的onSelectedIndexChange事件,你写的js代码inittree是否实现激活onSelectedIndexChange事件的功能,我看好象不是,但如果不是的话,就是我目前的现象:屏幕不会闪烁,但onSelectedIndexChange事件也无效.  
  如果方便能否给我一段源代码学习,不胜感激!我的E_mail:yy@fykj.com  
   
  Top

13 楼ljlove99(小剑)回复于 2003-08-02 10:44:30 得分 0

江雨的代码我原来也试过几次~  
   
  都不行~都还是有闪烁~  
   
  CSDN.net论坛中的treeview就没闪烁~不知道怎么搞的!!  
   
  真想知道啊~~Top

14 楼yy6439()回复于 2003-08-02 10:50:56 得分 0

upTop

15 楼yy6439()回复于 2003-08-02 10:51:50 得分 0

upTop

16 楼yy6439()回复于 2003-08-02 11:04:41 得分 0

upTop

相关问题

  • asp.net中怎么去掉TreeView的闪烁
  • Treeview??? 急
  • 吐血求救解决TreeView闪烁问题
  • 点击TreeView控件时闪烁(好象是在刷新)的很厉害,如何让它不闪烁?
  • treeview用法  急!!!!
  • Treeview问题,急!!
  • 在程序中需要动态重置TreeView,但是重新构置TreeView时,TreeView窗体的ScrollBar会闪烁,如何解决?
  • 关于TREEVIEW特急
  • treeview的问题,急!
  • delphi建树(急)(treeview)

关键词

  • .net
  • 代码
  • 页面
  • 节点
  • 服务器
  • 属性
  • 屏幕
  • 测试
  • treeview
  • onselectedindexchange

得分解答快速导航

  • 帖主:yy6439
  • hgknight

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo