Я использую управление древовидной структурой Kendo UI с флажками в asp.net mvc. И родительский, и дочерний узлы имеют свойства id. Когда пользователь проверяет все дочерние узлы, я хочу отслеживать, какие из них были проверены. Ниже приведен код cshtml вместе с кодом javascript, чтобы отслеживать идентификаторы и мой json, используемый для заполнения дерева.Как отслеживать идентификаторы проверенных узлов в Kendo UI Treeview
<div style="padding-top: 2em;">
<h4>Status</h4>
<p id="result">No nodes checked.</p>
</div>
<script>
$("#treeview").kendoTreeView({
checkboxes: {
checkChildren: true,
},
dataSource: {
//type: "odata",
transport: {
read: {
url: '@Url.Content("~/Document/GetDocuments")',
type: "post",
dataType: "json"
}
},
schema: {
model: {
id: "id", text: "Name",
children: "Files"
}
}
},
dataTextField: [ "Name", "FileName"],
check: onCheck
});
// function that gathers IDs of checked nodes
function checkedNodeIds(nodes, checkedNodes) {
for (var i = 0; i < nodes.length; i++) {
if (nodes[i].checked) {
checkedNodes.push(nodes[i].name);
}
if (nodes[i].hasChildren) {
checkedNodeIds(nodes[i].children.view(), checkedNodes);
}
}
}
// show checked node IDs on datasource change
function onCheck() {
var checkedNodes = [],
treeView = $("#treeview").data("kendoTreeView"),
message;
checkedNodeIds(treeView.dataSource.view(), checkedNodes);
if (checkedNodes.length > 0) {
message = "IDs of checked nodes: " + checkedNodes.join(",");
} else {
message = "No nodes checked.";
}
$("#result").html(message);
}
</script>
json object
[{"id":1,"Name":"Checking",
"Files":[{"Filename":"doc10","id":"1afd5a4f-086f-44d2-9287-8098384e379e"},
{"Filename":"doc11","id":"89ea3366-14b8-4e91-8273-6e2a51fbe516"}]},
{"id":2,"Name":"Saving",
"Files":[{"Filename":"doc20","id":"c7a88f5d-067e-4f20-93b6-da6eff69d532"},
{"Filename":"doc21","id":"8a0a62ed-1b4a-4e5e-8d59-d57a975a7ab0"}]}]
Когда я проверяю некоторые дочерние узлы, он отображает только «идентификаторы проверенных узлов: ,,,». Таким образом, похоже, что значение идентификатора становится пустым.
Благодаря
Спасибо за ответ. Оказывается, так как мне нужен идентификатор от детей, я должен идти еще глубже. Поэтому я должен использовать два для циклов. – Massey