禁用树视图节点

问题描述:

我已经列出了ASP.net控件TreeView的数据。我想要禁用列出的TreeView中的特定节点/父节点。我想用jQuery来做到这一点。禁用树视图节点

,如果你把一个简单的树节点标记:

<asp:TreeView runat="server" ID="myTreeView"> 
     <Nodes> 
      <asp:TreeNode Text="Node 1 "/>       
      <asp:TreeNode Text="Node 2"/>       
      <asp:TreeNode Text="Node 3"/>       
     </Nodes> 
     <NodeStyle CssClass="treeNode" /> 
    </asp:TreeView> 

那么对于单个节点的默认输出是:

<table cellspacing="0" cellpadding="0" style="border-width: 0pt;"> 
    <tbody><tr> 
     <td><img alt="" src="/WebResource.axd?d=g57q362hyd_ZDMok5KQd0PqwW46aD7OdNOJZcZxqq5Q1&amp;t=634092817937234954"></td><td style="white-space: nowrap;" class="treeNode myTreeView_2"><a style="border-style: none; font-size: 1em;" id="myTreeViewt0" onclick="TreeView_SelectNode(myTreeView_Data, this,'myTreeViewt0');" href="javascript:__doPostBack('myTreeView','sNode 1 ')" class="myTreeView_0 treeNode myTreeView_1">Node 1 </a></td> 
    </tr> 
</tbody></table> 

在这一点上,你可以看到周围的那得到一个标签生成接收css类'treeNode',以便选择一个特定的节点,您可以使用以下选择器:

$('。treeNode:eq(0)')获取树中的第一个节点。还有其他选择器可能更喜欢使用,请参阅jQuery docs上的选择器页面。

然后你可以做不同的事情。

  • 您可以隐藏节点:

    $('.treeNode:eq(0)').hide(); 
    

你可以替换文本标签:

 var node = $('.treeNode:eq(0)'); //get the node element 
     var nodeLink = $('a', node).hide() //get the link and hide it; 
     node.append(nodeLink.text()); //get the text from the link and add it to the node 

,或者你可以使用第三方的jQuery插件,阻止元素(通常在执行ajax操作时很好):

 - download the [blockui][2] plugin 
     - reference the javascript file from your page (or masterpage) 
     - then use this javascript call: 
      to block: 
         $('.treeNode:eq(0)').block(); 
      unblock: 
         $('.treeNode:eq(0)').unblock(); 
+0

确定.....任何想法如何从TreeView中拖动特定的子节点并将其放到任何DIV或任何位置? – 2010-07-07 08:50:45

+0

这就是整个其他话题... 有很多选项(http://jqueryui.com/demos/draggable/,http://plugins.jquery.com/project/Plugins/category/45)你会发现如何用jQuery做足够的例子。 但是,就我所见,拖放不仅仅是一个技术问题,而且也是一个设计问题。我建议不要仅仅使用d&d,因为它看起来很酷,你必须正确地做它,并且它是有道理的。有时添加一个按钮会让你的用户的生活变得更加容易,如果他们有拖放功能...... :) – poeticGeek 2010-07-07 13:37:39