0

編集: このウェブサイトは私が探しているものの始まりです: http://www.telerik.com/help/aspnet-ajax/treeview-client-basics.htmlしかし、ものを選択するために、質問に固有の情報が表示されません. 補足: ご存知の場合は、findNodeByText(); を実行します。再帰的に呼び出しますか、それとも単に終了するだけですか?

通常のサーバー機能に従って展開されるツリービューの代わりに、javascript コマンドを実行します。私の目標は、Controls.add(child); を使用してサーバー上ですべてを行うのではなく、TreeView クライアント側にデータを入力することです。サーバー上。

そうは言っても、展開/折りたたみサーバーのpingをオーバーライドして、代わりに自分の呼び出しにルーティングするように設定するにはどうすればよいですか?

<telerik:RadTreeView runat="server" ID = "FieldTreeViewer" OnClientNodePopulating="nodePopulating">
   <Nodes>
       <telerik:RadTreeNode runat="server" Text="<%$ Resources: bicweb_resources, REPORT_TYPES %>" ExpandMode = "WebService" Value = "{TopNode}" ></telerik:RadTreeNode>
       <telerik:RadTreeNode runat="server" Text="<%$ Resources: bicweb_resources, UNASSIGNED_FIELDS %>" ExpandMode = "WebService" Value = "{Unassigned}"></telerik:RadTreeNode>
   </Nodes>
   <WebServiceSettings Path="webservices/FormDesigner.svc" Method="getNodesWEBSERVICE" />
</telerik:RadTreeView>

クリックすると(機能を実行)、それに応じて展開します。

4

1 に答える 1

0

ここでの秘訣は、展開するには + が必要なので、設定したコントロールで:

ExpandMode="ServerSide"

これにより、展開オプションが提供されます。それを行っているときは、展開するために、次の設定も必要になります。

OnClientNodeExpanded="FUNCTION"

これにより、関数が呼び出されて展開されます。次に、ノードを構築します。私が行った方法は、子を取得するサービスへの AJAX 呼び出しを行い、クライアント側でノードを作成することでした。ajax 呼び出しを行う方法については、AJAX を参照してください。ノードを作成するには、次のようにしました。

if (result.getChildrenFromTelTreeResult == "") {
    alert("No Children");
} else {
    var childNodes = JSON.parse(result.getChildrenFromTelTreeResult);
    var newChild;
    //alert(childNodes.length);
    for (var i = 0; i < childNodes.length; i++) {
         TV.trackChanges();
         newChild = new Telerik.Web.UI.RadTreeNode();
         newChild.set_text(childNodes[i].pText);
         newChild.set_value(childNodes[i].pValue);
         //confirmed that newChild is set to ServerSide through debug and get_expandMode();
         parentNode.get_nodes().add(newChild);
         TV.commitChanges();
         var parts = childNodes[i].pValue.split(",");
         if (parts[0] != "{fe_id}") {
            newChild.set_expandMode(Telerik.Web.UI.TreeNodeExpandMode.ServerSide);
         }
    }
}

これにより、すべての子が作成されます。最後に、葉の場合は展開ボタンがないという声明があります。デフォルトは CleintSide なので、本質的と言っただけです。if (!leaf){SET NODE = ServerSide} 展開オプションを指定します。

于 2012-07-31T12:52:20.810 に答える