У меня есть это древовидное представление, которое может иметь переменное количество детей (некоторые узлы могут иметь до 3 поколений детей, некоторые могут иметь только одно и т. Д.)
Я пытаюсь расширить определенный узел при загрузке древовидной структуры. И у меня есть 2 проблемы: 1) Я не могу найти событие / обратный вызов, чтобы знать, когда древовидное представление будет готово 2) Функция расширения не всегда работает (я объясню)
Это мое древовидное представление:
function InitializeTreeview() {
var Children_Merchants = {
transport: {
read: {
url: function (options) {
return kendo.format(websiteRootUrl + '/Merchants/Merchants/?hasParents={0}', hasParent);
}
}
},
schema: {
model: {
model: {
id: "ID",
hasChildren: true,
children: Children_Merchants
}
}
}
};
var Brandowners = new kendo.data.HierarchicalDataSource({
transport: {
read: {
url: kendo.format(websiteRootUrl + '/Merchants/GetBrandowners?databaseID={0}', selectedDatabaseID)
}
},
//change: ExpandNode, - if I call expand node like this, it works.
schema: {
model: {
id: "ID",
hasChildren: true,
children: Children_Merchants
}
}
});
$('#treeview').kendoTreeView({
dataSource: Brandowners,
animation: {
collapse: {
duration: 200,
effects: "fadeOut"
},
expand: {
duration: 200,
effects: "fadeIn"
}
},
dataTextField: "Name",
complete: function () { alert('ok'); },
//dataBound : ExpandNode,
select: OnSelect,
expand: CheckIfHasParent
}).data('kendoTreeView');
}
function ExpandNode() {
var treeview;
treeview = $("#treeview").data("kendoTreeView");
var nodeToExpand = treeview.findByText('Adam'); //dummy txt, will have from parameter
treeview.expand(nodeToExpand);
}
Связь данных работает нормально, мои контроллеры вызываются, все в порядке. Я попробовал подключить функцию ExpandNode одним нажатием кнопки. Функция вызывается, но ничего не происходит. НО, если я подключу его к событию изменения родительского источника данных, он сработает. Еще одна интересная вещь заключается в том, что выбор работает, поэтому, если я заменю treeview.expand (...) на treeview.select (...), он будет работать по щелчку.
Итак, мои вопросы:
1) Какое событие я должен использовать для loadEnd (или чего-то подобного) - чтобы мне не пришлось связывать функцию с нажатием кнопки (все еще нормально, но я предпочитаю, чтобы загрузка закончилась) - P.S. Я перепробовал все, что нашел на форумах по кендо, например: change, requestEnd, success, dataBound, и они не работают. Я попытался отправить JSON со свойством «расширенный», установленным на ИСТИНА, для рассматриваемого узла, но это только изменяет стрелку так, чтобы она отображалась так, как будто она открыта, но не вызывает контроллер и не загружает дочерние элементы.
2) Вы знаете, почему ExpandNode работает только при привязке к событию изменения? - самый важный для меня вопрос.
3) Если у вас есть предложения или я сделал что-то не так при инициализации древовидной структуры, сообщите мне.
Children_Merchants
не являетсяHierarchicalDataSource
? - person OnaBai   schedule 08.07.2013