CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

webcontrol treeview 的节点拖拽问题

楼主kha()2005-02-01 08:03:13 在 .NET技术 / ASP.NET 提问

在现在的treeview问题中找了很久,难道大家都没有碰到过要拖动节点的问题吗。希望有人能指点一下。 问题点数:100、回复次数:16Top

1 楼warren1999(warren1999)回复于 2005-02-01 08:30:24 得分 0

gzTop

2 楼simon8181()回复于 2005-02-01 08:38:33 得分 0

gzTop

3 楼jsyzfeb()回复于 2005-02-01 08:38:41 得分 0

dingTop

4 楼shenghuayi(oldman)回复于 2005-02-01 08:45:01 得分 10

这个问题有点难,首先我看你需要把MS在后台写的那几个HTC弄明白,然后就是使用JS来处理了,当然处理的同时得做无刷新后台保存。Top

5 楼camelials(星期五)回复于 2005-02-01 08:46:57 得分 10

treeview这个东东,不好的地方也多.  
  要实现树还有很多方法.  
  我记得以前孟子告诉过我一个可以拖拉的树.  
  你上google找一个drag   &   drop.  
  看看.要不然去问问孟子Top

6 楼owg(OMG)回复于 2005-02-01 08:48:36 得分 10

参考:http://www.evget.com/view/viewCategoryProduct.asp?language=&mode=&productTypeId=&categoryId=21Top

7 楼goody9807(http://goody9807.cnblogs.com)回复于 2005-02-01 08:53:22 得分 30

给个JS的例子你看看  
  <html>  
  <head>  
  <meta   http-equiv="Content-Type"   content="text/html;   charset=gb2312">  
  <title>可移动窗口</title>  
  <script   language="JavaScript"   type="text/JavaScript">  
  <!--  
   
  function   MM_findObj(n,   d)   {   //v4.01  
      var   p,i,x;     if(!d)   d=document;   if((p=n.indexOf("?"))>0&&parent.frames.length)   {  
          d=parent.frames[n.substring(p+1)].document;   n=n.substring(0,p);}  
      if(!(x=d[n])&&d.all)   x=d.all[n];   for   (i=0;!x&&i<d.forms.length;i++)   x=d.forms[i][n];  
      for(i=0;!x&&d.layers&&i<d.layers.length;i++)   x=MM_findObj(n,d.layers[i].document);  
      if(!x   &&   d.getElementById)   x=d.getElementById(n);   return   x;  
  }  
   
  function   MM_dragLayer(objName,x,hL,hT,hW,hH,toFront,dropBack,cU,cD,cL,cR,targL,targT,tol,dropJS,et,dragJS)   {   //v4.01  
      //Copyright   1998   Macromedia,   Inc.   All   rights   reserved.  
      var   i,j,aLayer,retVal,curDrag=null,curLeft,curTop,IE=document.all,NS4=document.layers;  
      var   NS6=(!IE&&document.getElementById),   NS=(NS4||NS6);   if   (!IE   &&   !NS)   return   false;  
      retVal   =   true;   if(IE   &&   event)   event.returnValue   =   true;  
      if   (MM_dragLayer.arguments.length   >   1)   {  
          curDrag   =   MM_findObj(objName);   if   (!curDrag)   return   false;  
          if   (!document.allLayers)   {   document.allLayers   =   new   Array();  
              with   (document)   if   (NS4)   {   for   (i=0;   i<layers.length;   i++)   allLayers[i]=layers[i];  
                  for   (i=0;   i<allLayers.length;   i++)   if   (allLayers[i].document   &&   allLayers[i].document.layers)  
                      with   (allLayers[i].document)   for   (j=0;   j<layers.length;   j++)   allLayers[allLayers.length]=layers[j];  
              }   else   {  
                  if   (NS6)   {   var   spns   =   getElementsByTagName("span");   var   all   =   getElementsByTagName("div");    
                      for   (i=0;i<spns.length;i++)   if   (spns[i].style&&spns[i].style.position)   allLayers[allLayers.length]=spns[i];}  
                  for   (i=0;i<all.length;i++)   if   (all[i].style&&all[i].style.position)   allLayers[allLayers.length]=all[i];    
          }   }  
          curDrag.MM_dragOk=true;   curDrag.MM_targL=targL;   curDrag.MM_targT=targT;  
          curDrag.MM_tol=Math.pow(tol,2);   curDrag.MM_hLeft=hL;   curDrag.MM_hTop=hT;  
          curDrag.MM_hWidth=hW;   curDrag.MM_hHeight=hH;   curDrag.MM_toFront=toFront;  
          curDrag.MM_dropBack=dropBack;   curDrag.MM_dropJS=dropJS;  
          curDrag.MM_everyTime=et;   curDrag.MM_dragJS=dragJS;  
          curDrag.MM_oldZ   =   (NS4)?curDrag.zIndex:curDrag.style.zIndex;  
          curLeft=   (NS4)?curDrag.left:(NS6)?parseInt(curDrag.style.left):curDrag.style.pixelLeft;    
          if   (String(curLeft)=="NaN")   curLeft=0;   curDrag.MM_startL   =   curLeft;  
          curTop   =   (NS4)?curDrag.top:(NS6)?parseInt(curDrag.style.top):curDrag.style.pixelTop;    
          if   (String(curTop)=="NaN")   curTop=0;   curDrag.MM_startT   =   curTop;  
          curDrag.MM_bL=(cL<0)?null:curLeft-cL;   curDrag.MM_bT=(cU<0)?null:curTop-cU;  
          curDrag.MM_bR=(cR<0)?null:curLeft+cR;   curDrag.MM_bB=(cD<0)?null:curTop+cD;  
          curDrag.MM_LEFTRIGHT=0;   curDrag.MM_UPDOWN=0;   curDrag.MM_SNAPPED=false;   //use   in   your   JS!  
          document.onmousedown   =   MM_dragLayer;   document.onmouseup   =   MM_dragLayer;  
          if   (NS)   document.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);  
      }   else   {  
          var   theEvent   =   ((NS)?objName.type:event.type);  
          if   (theEvent   ==   'mousedown')   {  
              var   mouseX   =   (NS)?objName.pageX   :   event.clientX   +   document.body.scrollLeft;  
              var   mouseY   =   (NS)?objName.pageY   :   event.clientY   +   document.body.scrollTop;  
              var   maxDragZ=null;   document.MM_maxZ   =   0;  
              for   (i=0;   i<document.allLayers.length;   i++)   {   aLayer   =   document.allLayers[i];  
                  var   aLayerZ   =   (NS4)?aLayer.zIndex:parseInt(aLayer.style.zIndex);  
                  if   (aLayerZ   >   document.MM_maxZ)   document.MM_maxZ   =   aLayerZ;  
                  var   isVisible   =   (((NS4)?aLayer.visibility:aLayer.style.visibility).indexOf('hid')   ==   -1);  
                  if   (aLayer.MM_dragOk   !=   null   &&   isVisible)   with   (aLayer)   {  
                      var   parentL=0;   var   parentT=0;  
                      if   (NS6)   {   parentLayer   =   aLayer.parentNode;  
                          while   (parentLayer   !=   null   &&   parentLayer.style.position)   {                            
                              parentL   +=   parseInt(parentLayer.offsetLeft);   parentT   +=   parseInt(parentLayer.offsetTop);  
                              parentLayer   =   parentLayer.parentNode;  
                      }   }   else   if   (IE)   {   parentLayer   =   aLayer.parentElement;                
                          while   (parentLayer   !=   null   &&   parentLayer.style.position)   {  
                              parentL   +=   parentLayer.offsetLeft;   parentT   +=   parentLayer.offsetTop;  
                              parentLayer   =   parentLayer.parentElement;   }   }  
                      var   tmpX=mouseX-(((NS4)?pageX:((NS6)?parseInt(style.left):style.pixelLeft)+parentL)+MM_hLeft);  
                      var   tmpY=mouseY-(((NS4)?pageY:((NS6)?parseInt(style.top):style.pixelTop)   +parentT)+MM_hTop);  
                      if   (String(tmpX)=="NaN")   tmpX=0;   if   (String(tmpY)=="NaN")   tmpY=0;  
                      var   tmpW   =   MM_hWidth;     if   (tmpW   <=   0)   tmpW   +=   ((NS4)?clip.width   :offsetWidth);  
                      var   tmpH   =   MM_hHeight;   if   (tmpH   <=   0)   tmpH   +=   ((NS4)?clip.height:offsetHeight);  
                      if   ((0   <=   tmpX   &&   tmpX   <   tmpW   &&   0   <=   tmpY   &&   tmpY   <   tmpH)   &&   (maxDragZ   ==   null  
                              ||   maxDragZ   <=   aLayerZ))   {   curDrag   =   aLayer;   maxDragZ   =   aLayerZ;   }   }   }  
              if   (curDrag)   {  
                  document.onmousemove   =   MM_dragLayer;   if   (NS4)   document.captureEvents(Event.MOUSEMOVE);  
                  curLeft   =   (NS4)?curDrag.left:(NS6)?parseInt(curDrag.style.left):curDrag.style.pixelLeft;  
                  curTop   =   (NS4)?curDrag.top:(NS6)?parseInt(curDrag.style.top):curDrag.style.pixelTop;  
                  if   (String(curLeft)=="NaN")   curLeft=0;   if   (String(curTop)=="NaN")   curTop=0;  
                  MM_oldX   =   mouseX   -   curLeft;   MM_oldY   =   mouseY   -   curTop;  
                  document.MM_curDrag   =   curDrag;     curDrag.MM_SNAPPED=false;  
                  if(curDrag.MM_toFront)   {  
                      eval('curDrag.'+((NS4)?'':'style.')+'zIndex=document.MM_maxZ+1');  
                      if   (!curDrag.MM_dropBack)   document.MM_maxZ++;   }  
                  retVal   =   false;   if(!NS4&&!NS6)   event.returnValue   =   false;  
          }   }   else   if   (theEvent   ==   'mousemove')   {  
              if   (document.MM_curDrag)   with   (document.MM_curDrag)   {  
                  var   mouseX   =   (NS)?objName.pageX   :   event.clientX   +   document.body.scrollLeft;  
                  var   mouseY   =   (NS)?objName.pageY   :   event.clientY   +   document.body.scrollTop;  
                  newLeft   =   mouseX-MM_oldX;   newTop     =   mouseY-MM_oldY;  
                  if   (MM_bL!=null)   newLeft   =   Math.max(newLeft,MM_bL);  
                  if   (MM_bR!=null)   newLeft   =   Math.min(newLeft,MM_bR);  
                  if   (MM_bT!=null)   newTop     =   Math.max(newTop   ,MM_bT);  
                  if   (MM_bB!=null)   newTop     =   Math.min(newTop   ,MM_bB);  
                  MM_LEFTRIGHT   =   newLeft-MM_startL;   MM_UPDOWN   =   newTop-MM_startT;  
                  if   (NS4)   {left   =   newLeft;   top   =   newTop;}  
                  else   if   (NS6){style.left   =   newLeft;   style.top   =   newTop;}  
                  else   {style.pixelLeft   =   newLeft;   style.pixelTop   =   newTop;}  
                  if   (MM_dragJS)   eval(MM_dragJS);  
                  retVal   =   false;   if(!NS)   event.returnValue   =   false;  
          }   }   else   if   (theEvent   ==   'mouseup')   {  
              document.onmousemove   =   null;  
              if   (NS)   document.releaseEvents(Event.MOUSEMOVE);  
              if   (NS)   document.captureEvents(Event.MOUSEDOWN);   //for   mac   NS  
              if   (document.MM_curDrag)   with   (document.MM_curDrag)   {  
                  if   (typeof   MM_targL   =='number'   &&   typeof   MM_targT   ==   'number'   &&  
                          (Math.pow(MM_targL-((NS4)?left:(NS6)?parseInt(style.left):style.pixelLeft),2)+  
                            Math.pow(MM_targT-((NS4)?top:(NS6)?parseInt(style.top):style.pixelTop),2))<=MM_tol)   {  
                      if   (NS4)   {left   =   MM_targL;   top   =   MM_targT;}  
                      else   if   (NS6)   {style.left   =   MM_targL;   style.top   =   MM_targT;}  
                      else   {style.pixelLeft   =   MM_targL;   style.pixelTop   =   MM_targT;}  
                      MM_SNAPPED   =   true;   MM_LEFTRIGHT   =   MM_startL-MM_targL;   MM_UPDOWN   =   MM_startT-MM_targT;   }  
                  if   (MM_everyTime   ||   MM_SNAPPED)   eval(MM_dropJS);  
                  if(MM_dropBack)   {if   (NS4)   zIndex   =   MM_oldZ;   else   style.zIndex   =   MM_oldZ;}  
                  retVal   =   false;   if(!NS)   event.returnValue   =   false;   }  
              document.MM_curDrag   =   null;  
          }  
          if   (NS)   document.routeEvent(objName);  
      }   return   retVal;  
  }  
  //-->  
  </script>  
  </head>  
  Top

8 楼goody9807(http://goody9807.cnblogs.com)回复于 2005-02-01 08:53:37 得分 10

<body   bgcolor="#003366"   onLoad="MM_dragLayer('log','',0,0,0,0,true,false,-1,-1,-1,-1,false,false,0,'',false,'')">  
  <div   id=log   style="position:absolute;   left:348px;   top:192px;   width:377px;   height:189px;   z-index:1"   >    
      <table   width="377"   border="0"   cellpadding="0"   cellspacing="0"   style="background:#003399   ;font-size:17px   ;color:#ffffff;font-weight:boder;">  
          <!--DWLayoutTable-->  
          <tr>    
              <td   width="377"   height="18"   valign="top"   >     窗口名称</td>  
              </tr>  
      </table>  
      <table   width="377"   border="0"   cellpadding="0"   cellspacing="0"   style="border:#003399   1px   solid;   background:#dddddd;">  
          <!--DWLayoutTable-->  
          <tr>    
              <td   width="377"   height="20"   bgcolor="#CCCCCC"></td>  
      <td   width="377"   height="147"   bgcolor="#FFFFFF"></td>  
          </tr>  
      </table>  
  </div>  
       
   
   
  </body>  
  </html>  
  Top

9 楼liulxmooo(娃娃)回复于 2005-02-01 08:57:01 得分 0

upTop

10 楼xueqs()回复于 2005-02-01 09:01:41 得分 10

写拖曳js要牛才行Top

11 楼mooddecode1980(心情解码)回复于 2005-02-01 09:08:47 得分 0

:)  
   
  --Top

12 楼haoco()回复于 2005-02-01 11:42:49 得分 0

upTop

13 楼soochowgreen(Green)回复于 2005-02-01 14:45:28 得分 0

 
   
  问个傻瓜问题:  
  拖动节点完毕后如何触发后台的事件呢?  
   
  唉,感觉B/S上的树的刷新总是最累人的事情哇Top

14 楼lovelxj(伊斯人,吾谁与归)回复于 2005-02-01 15:00:22 得分 10

拖动完   节点   之后     可以远程   调用程序来更新数据库    
  或者是让包含的一个iframe     来完成这个更新的工作Top

15 楼soochowgreen(Green)回复于 2005-02-01 15:12:44 得分 0

噢,这样啊,  
  也就是说用   URL   投递参数比较方便喽,  
  thanks  
  Top

16 楼nga96(因为我笨,所以努力。陈勇华)回复于 2005-02-01 15:27:37 得分 10

自己写算了Top

相关问题

  • Treeview 节点的拖拽问题
  • treeview节点 checked
  • TREEVIEW节点问题
  • treeview添加节点?
  • Treeview 节点问题
  • 用microsoft 的TreeView WebControl,树中的所有节点都是从数据库取出。。
  • 高分求教:同树下TreeView中节点拖拽
  • TreeView如何实现父节点的拖拽?
  • 如何重写TreeView控件,以实现节点的拖拽?
  • TREEVIEW有几个根节点

关键词

得分解答快速导航

  • 帖主:kha
  • shenghuayi
  • camelials
  • owg
  • goody9807
  • goody9807
  • xueqs
  • lovelxj
  • nga96

相关链接

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

广告也精彩

反馈

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