У меня есть Kendo Treeview, который создается здесь:
@(Html.Kendo().TreeView()
.Name("treeview")
.DataTextField("Name")
.DataSource(
dataSource => dataSource
.Read(read => read
.Action("Catalog_Read", "MerchandisingPart", new
{
departmentId = Model.GroupId,
classCode = Model.ClassId,
commodityCode = Model.CommodityCode
})
)
)
)
Когда страница первоначально загружается, дерево работает правильно, и расширяемые узлы загружают свои дочерние элементы. Каждый раз, когда узлы расширяются, вызывается метод Catalog_Read из контроллера для поиска дочерних узлов.
В коде есть текстовое поле под названием commodityCode. Когда это текстовое поле изменяется, я изменяю его источник данных и снова вызываю метод Catalog_Read для загрузки нового дерева. Это делается здесь:
$(document).ready(function () {
var tree = $("#treeview").data("kendoTreeView");
$("#commodityCode").change(function () {
var dataSourceRefresh = new kendo.data.HierarchicalDataSource({
transport:
{
read:
{
url: "@Url.Action("Catalog_Read", "MerchandisingPart")?departmentId=" + encodeURIComponent($('#GroupId').val())
+ "&classCode=" + encodeURIComponent($('#ClassId').val()) + "&commodityCode=" + encodeURIComponent($('#commodityCode').val()),
dataType: "json"
}
}
})
tree.setDataSource(dataSourceRefresh);
});
});
Это правильно загружает новое дерево. Моя проблема в том, что после того, как я получил новый источник данных, расширяемые узлы больше не раскрываются, чтобы показывать их дочерние элементы при нажатии. Он вызывает контроллер с правильными параметрами при каждом щелчке, он просто не расширяет дерево.
Кто-нибудь знает, как заставить дерево перезагрузить его потомки после изменения источника данных?
Спасибо!