Проблемы с $ find при использовании Telerik RadTreeView на главной странице - PullRequest
0 голосов
/ 08 августа 2009

У меня есть RadTreeView на MasterPage внутри 2-х вложенных RadSplitters. Я использую LoadOnDemand, но мне нужно иметь возможность расширять узлы из серверного кода. Я пытаюсь сделать это, вызвав метод, который я написал, чтобы развернуть узел в ResponseScripts. Этот метод в RadCodeBlock выглядит следующим образом:

<telerik:RadCodeBlock ID="RadCodeBlock2" runat="server"> 
<script type="text/javascript"> 
    function expandNode(nodeid) { 
        var treeView = $find("<%= NavigationTreeView.ClientID %>"); 
        var node = treeView.findNodeByValue(nodeid); 
        if (node) { 
            node.expand(); 
            return true; 
        } 
        return false; 
    }    
</script> 
</telerik:RadCodeBlock> 

Моя проблема в том, что я не могу получить доступ к RadTreeView для расширения узлов. Буду признателен за любые рекомендации о том, как получить доступ к этому древовидному представлению из JavaScript с помощью $ find.

Спасибо!

Лорен Киршнер

1 Ответ

1 голос
/ 15 августа 2009

Если вы попытаетесь развернуть древовидное представление из javascript, у вас нормально работает код.

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

function expandNode (nodeid) {

                var treeView = $find("<%= NavigationTreeView.ClientID %>");         
                var node = treeView.findNodeByValue(nodeid);
                alert(node);
                if (node) 
                {             
                    node.expand();             
                    return true;         
                }



                return false; 



            }

        </script>
    </telerik:RadCodeBlock>

    <telerik:RadSplitter ID="RadSplitter1" runat="server">
        <telerik:RadPane ID="RadPane" runat="server">
            <telerik:RadTreeView ID="NavigationTreeView" runat="server" >
                <Nodes>
                    <telerik:RadTreeNode Text="Node 1" Value="0">
                        <Nodes>
                            <telerik:RadTreeNode Text="Child1" Value="1"></telerik:RadTreeNode>
                        </Nodes>
                    </telerik:RadTreeNode>
                </Nodes>
            </telerik:RadTreeView>
        </telerik:RadPane>
    </telerik:RadSplitter>

    <asp:Button ID="BtnExpand" runat="server" Text="Expand jscript" OnClientClick="expandNode(0);" />
    <asp:Button ID="BtnExpandServer" runat="server" Text="Expand Server" OnClick="BtnExpandServer_Click" />

    <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

    </asp:ContentPlaceHolder>
</div>
</form>

Если вы пытаетесь расширить серверную часть, следующие действия основаны на примере, который я разместил выше.

protected void BtnExpandServer_Click(object sender, EventArgs e)
{        
    RadTreeNode node = NavigationTreeView.FindNodeByValue("0");
    node.Expanded = true;
}
...