Как получить данные дедушки в kendo.data.HierarchicalDataSource?

Я использую привязку дерева KendoUI к удаленным данным, ниже приведен мой код:

            <script>
            var serviceRoot = "/kendoui";

            var Taxonomys = {
                schema: {
                    model: {
                        id: "Name",
                        hasChildren: function () {
                            return false;
                        }
                    }
                },
                transport: {
                    read: {
                        url: function (options) {
                            return kendo.format("http://localhost/MySite/MySiteService.svc/Organization/{1}/Project/{0}/Taxonomy?includeSchema=0", options.Name);
                        }
                    }
                }
            };

            var Projects = {
                schema: {
                    model: {
                        id: "Name",
                        hasChildren: function () {
                            return true;
                        },
                        children: Taxonomys
                    }
                },
                transport: {
                    read: {
                        url: function (options) {
                            return kendo.format("http://localhost/MySite/MySiteService.svc/Organization/{0}/Project", options.Name);
                        }
                    }
                }
            };

            homogeneous = new kendo.data.HierarchicalDataSource({
                transport: {
                    read: {
                        url: "http://localhost/MySite/MySiteService.svc/Organization ",
                        dataType: "jsonp"
                    }
                },
                schema: {
                    model: {
                        id: "Name",
                        hasChildren: function () {
                            return true;
                        },
                        children: Projects
                    }
                }
            });

            $("#treeview").kendoTreeView({
                dataSource: homogeneous,
                dataTextField: ["Name", "Name", "Name"]
            });
        </script>

в таксономии мне нужно название организации.

http://localhost/MySite/MySiteService.svc/Organization/{1}/Project/{0}/Taxonomy?includeSchema=0

но опции в "url: function (options) {}" имеют только имя проекта. Как я могу получить имя родителя проекта?

1 ответ

Учитывая узел в дереве, вы должны использовать parent метод навигации по дереву.

Пример. Если мы хотим получить прародителя выбранного узла, мы должны использовать:

var select = treeview.select();
console.log("select", select);
if (select.length) {
    var parent = treeview.parent(select);
    if (parent.length) {
        console.log("parent", treeview.dataItem(parent));
        var grandparent = treeview.parent(parent);
        if (grandparent.length) {
            console.log("grandparent", treeview.dataItem(grandparent));
        } else {
            console.log("has no grandfather")
        }
    } else {
        console.log("has no father")
    }
} else {
    console.log("select a node");
}

Как видите, я проверяю, выбран ли узел, есть ли у него отец и есть ли дедушка.

Я также показываю данные этого пункта. При этом вы сможете получить информацию об Организации и Проекте, поскольку они являются частью модели.

Другие вопросы по тегам