2

次のデータソースで初期化された剣道ツリーがあります。

var dataSource = new kendo.data.HierarchicalDataSource({
            transport: {
                read: {
                url: '/Quota/Home/GetTemplateHierarchy',
                dataType: 'json',
                data: { hierarchyID: hierarchyID, quotaSetID: quotaSetID, batchSize: 10 }
            }
            },
            schema: {
                model: {
                    id: 'id',
                    hasChildren: 'hasChildren',
                    children: 'items',
                    fields: {
                        text: 'text'
                    }
                }
            }
        });

このデータソースに新しいノードを追加して作成する方法を知っている人はいますか? 一般的な treeview.append({ text: "Boo"}) を試しましたが、何もしません。ノードを正常に削除しましたが、ノードを追加できないようです。カスタム スキーマを使用するときに何かを追加する方法について、ドキュメントは明確ではありません。

4

3 に答える 3

1

Not sure what do you want to be the text of the node that you want to display. So I will guess that you want to display the only element in the schema nodelevel

The data in that case should be: { nodelevel : 99 }

Following a complete example where I have an initial node and then I append sub-nodes to the selected node.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>Tree View</title>
    <!-- Kendo UI Web styles-->
    <link href="styles/kendo.common.min.css" rel="stylesheet" type="text/css"/>
    <link href="styles/kendo.default.css" rel="stylesheet" type="text/css"/>

    <!-- Kendo UI Web scripts-->
    <script src="js/jquery.min.js" type="text/javascript"></script>
    <script src="js/kendo.web.min.js" type="text/javascript"></script>

    <script>
        $(document).ready(function () {
            var count = 0;
            var data = [
                { nodelevel: count++ }
            ];

            var dataSource = new kendo.data.HierarchicalDataSource({
                data  :data,
                schema:{
                    model:{
                        id         :'id',
                        hasChildren:'hasChildren',
                        children   :'items',
                        fields     :{
                            nodelevel:{
                                type    :'number',
                                editable:true,
                                nullable:false
                            }
                        }
                    }
                }
            });
            var tree = $("#tree").kendoTreeView({
                dataSource   :dataSource,
                dataTextField:"nodelevel"
            }).data("kendoTreeView");

            $("#add").click(function () {
                var selected = tree.select();
                if (selected.length > 0) {
                    tree.append({ nodelevel: count++ }, selected);
                }
            });
        });
    </script>

</head>
<body>
<a href="#" id="add">Add to selected</a>

<div id="tree"></div>
</body>
</html>
于 2012-11-21T22:39:38.377 に答える
0

追加するメモを指定しない場合、treeview.append が機能し、新しいノードをルート レベルに追加する必要があります

dataSource を使用することもできます。insert ({text:"foo"}) またはdataSource.add

于 2012-11-22T19:49:23.270 に答える