У меня есть этот TreeView может которым иметь переменное число детей (некоторые узлы могут иметь до 3-х поколений детей, некоторые из них могут иметь только один и т.д.)Кендо Treeview Expand Node
То, что я пытаюсь сделать, это развернуть определенный узел при загрузке дерева. И у меня есть 2 проблемы: 1) Я не могу найти событие/обратный вызов, так что я знаю, когда TreeView готов 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 (или то вроде этого) - так что я не должен связать функцию кнопки мыши (она по-прежнему хорошо, но я preffer на груз закончился) - PS Я пробовал все, что я нашел на форумах кендо, например: change, requestEnd, success, dataBound, и они не работают. Я попытался отправить JSON с «расширенным» свойством в TRUE для рассматриваемого узла, но это только изменяет стрелку, чтобы показать, как она открыта, но она не вызывает контроллер и не загружает детей.
2) Знаете ли вы, почему ExpandNode работает только при привязке к событию изменения? - самый важный вопрос для меня.
3) Если у вас есть предложения или я сделал что-то неправильно в инициализации древовидной структуры, скажите, пожалуйста.
Я попробовал уже, она изменяет только стрелку расширенного режима – Vlad
вы делаете нагрузки по требованию или загрузив все дерево в одном переводе? – OnaBai
Я попытался установить loadOnDemmand в false и отправить expand = true. и затем BOOM. некоторые 2-3 узлы расширились с детьми и всеми. но у меня есть в общей сложности 100 + родителей + поколений, он рекламирует до 40000 узлов. Так что он разбился. Я думаю, это было бы решением, но мне это нехорошо. – Vlad