0

编辑:这个网站是我正在寻找的开始: http ://www.telerik.com/help/aspnet-ajax/treeview-client-basics.html但是为了选择东西,我没有看到特定于问题的信息. 旁注:如果你知道,findNodeByText(); 递归调用,还是只是离开,还是什么?

我希望它执行一个javascript命令,而不是按照正常的服务器功能扩展树视图。我的目标是填充 TreeView 客户端,而不是在服务器上使用 Controls.add(child); 在服务器上。

话虽如此,我将如何设置它以覆盖展开/折叠服务器 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 回答