首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RadTreeView节点循环

RadTreeView节点循环
EN

Stack Overflow用户
提问于 2012-08-14 07:12:58
回答 1查看 4.9K关注 0票数 1

我正在使用RadTreeView,这是一个很好的控件,我有一个小问题,希望您能帮助我,我已经创建了一个Next按钮和一个搜索文本框,用户在textbox中输入首选的搜索条件,然后点击Next。

当他单击Next时,我搜索TreeView并在TreeView节点中找到第一个匹配项,并使其被选中;当他再次单击Next时,我希望找到同一个节点的下一个匹配项并使其被选中。

我怎样才能做到这一点,谢谢:)如果可能,我希望它成为客户端

到目前为止,我的代码如下:

代码语言:javascript
复制
<script type="text/javascript">
function FindMatchingNodes() {

            var tree = $find("<%=MainTree.ClientID%>");
            var text = document.getElementById("<%=ApplicationSearchResult.ClientID%>").value;
            var allNodes = tree.get_allNodes();

            var array = new Array();
            staticVar();
           for (var i = 0; i < allNodes.length; i++) {
                var node = allNodes[i];
                var itemText = node.get_text();
                var itemValue = node.get_value();

               if (text != "") {
                   if (text == itemText) {
                        array.push(itemValue);
                    }
                }
            }
            if (staticVar.counter >= array.length) { staticVar.counter = 0; }
          var SelectedNode =tree.findNodeByValue(array[staticVar.counter].toString());
            var pNode = SelectedNode.get_parent();
            SelectedNode.select();
            pNode.set_expanded(true);
            SelectedNode.set_expanded(true);
            array = null;

        }

        function staticVar() {
            if (staticVar.counter == undefined) {
                staticVar.counter = 0        
            }
            else {
                staticVar.counter++
            }
        }
</script>

//标记

代码语言:javascript
复制
  <telerik:RadTreeView ID="MainTree" runat="server" CssClass="NewClass" 
        Skin="Office2010Silver">
    <Nodes>
    <telerik:RadTreeNode Selected="true" Text="Hello"  Value="0">
        <Nodes>
            <telerik:RadTreeNode runat="server" Text="Hi" Value="1">
            </telerik:RadTreeNode>
        </Nodes>
        </telerik:RadTreeNode>
    <telerik:RadTreeNode  Text="Hellooooooooooooo" Value="2">
        <Nodes>
            <telerik:RadTreeNode runat="server" Text="helloooo" Value="3">
            </telerik:RadTreeNode>
        </Nodes>
        </telerik:RadTreeNode>
<telerik:RadTreeNode runat="server" Owner="MainTree" Text="Hi" Value="4"></telerik:RadTreeNode>
<telerik:RadTreeNode runat="server" Owner="MainTree" Text="Hiiiiiiiiiiiiiii" Value="5"></telerik:RadTreeNode>
<telerik:RadTreeNode runat="server" Owner="MainTree" Text="Hello" Value="6" 
            ></telerik:RadTreeNode>
    </Nodes>
    <Nodes>
    <telerik:RadTreeNode  Text="Hi" Value="7"></telerik:RadTreeNode>
    <telerik:RadTreeNode  Text="Hiiiiiiiiiiiiiii" Value="8"></telerik:RadTreeNode>
    <telerik:RadTreeNode  Text="Hello" Value="9"></telerik:RadTreeNode>
    </Nodes>
    </telerik:RadTreeView>
    <table border="0">
    <tr>
    <td><telerik:RadTextBox ID="ApplicationSearchResult" runat="server">
   <ClientEvents OnKeyPress="KeyPress" />
    </telerik:RadTextBox></td>
     <td><img src="next.png" onclick="FindMatchingNodes();" style="cursor:pointer;" runat="server" height="17" width="17" ID="NextNode" /></td>
      </tr>
      </table> 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-14 08:50:05

代码语言:javascript
复制
function findNext() {
     var search = $get("<%= ApplicationSearchResult.ClientID %>").value;

     var treeView = $find("<%= MainTree.ClientID %>");
     var selectedNode = treeView.get_selectedNode();
     var nodes = treeView.get_allNodes();
     var index = selectedNode ? nodes.indexOf(selectedNode) + 1 : 0;
     for (var itemsProcessed = 0; itemsProcessed < nodes.length; ++itemsProcessed, ++index) {
          if (index >= nodes.length)
               index = 0;

          var node = nodes[index];
          if (node.get_text() == search) {
               if (selectedNode) {
                    selectedNode.unselect();
               }
               node.select();
               expandAllAncestors(node);
               return;
          }

     }
}

function expandAllAncestors(node) {
     if (node.get_expanded() !== true)
          node.expand();

     if (node.get_level() != 0) {
          expandAllAncestors(node.get_parent());
     }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11947442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档