gpt4 book ai didi

javascript - 读取 Kendo Tree 后未定义 Tree_view

转载 作者:行者123 更新时间:2023-12-03 22:52:11 24 4
gpt4 key购买 nike

这是我的问题:

我第一次加载我的树来显示他。
我可以更改 session 文件名“state”的值以启用或禁用树中的节点。

但是在我更改数据库中的 ne 值并返回 JSON 后,我再次读取树以使用更改刷新我的树,但它失败并在控制台中写入:
“类型错误:Tree_view.getElementsByClassName(...)[0].children[(item.id_perso - 1)].children[1] 未定义”。

我不明白的是我第一次通过这些函数并且它运行良好,但是当我重新加载它时显然失败了,因为它未定义。

谢谢你的帮助。

    $(document).ready(function() {
$('#Tree_view').kendoTreeView({
template: "#= item.name #",
dataSource: Parcours,
dataTextField: 'name',
loadOnDemand: true,
expand: onExpandedItem
});
});

function onExpandedItem(e) {

var id_user = @Model.id;

var item = $('#Tree_view').data('kendoTreeView').dataItem(e.node);
var treeview = $('#Tree_view').data('kendoTreeView');
var type = item.fields.type;

if (item.level() > 0) {
item.id_parcours = item.parentNode().id_parcours;
if (item.level() == 2) {
item.id_promo = item.parentNode().id;
}
}
else item.id_parcours = item.Id;

switch (type) {
case 'parcours':
item.children.transport.options.read = {
url: '@Url.Action("Get_Session", "Users")' + '?user_id=' + id_user,
dataType: "json",
};
break;

case 'session':
item.children.transport.options.read = {
url: '@Url.Action("Get_Matiere")' + '?user_id=' + id_user,
dataType: "json"
};
break;

default:
break;
}

if (item.level() == 0) {
setTimeout(function() { waitDisable(item, treeview); }, 1000);
}
}

function waitDisable(item, treeview) {
if (item.fields.type == "parcours")
{
var node = Tree_view.getElementsByClassName('k-group')[0].children[item.id_perso - 1].children[1].children;
for (i = 0; i < item.children._data.length; i ++)
{
if (item.children._data[i].state != null) {
node[i].children[0].children[1].className = "k-in k-state-disabled";
node[i].children[0].children[0].className = ".k-icon-remove";
}
else node[i].children[0].children[0].className = "k-icon k-plus";

addRow(node, item, i, treeview);
}
}
}

var cmp = 0;
var One_Time = false;

function addRow(node_Here, item, i, treeview) {

var actual_row = node_Here[i].children[0];
if (actual_row.childNodes.length < 3) {
var newSpan = document.createElement('button');
if (item.children._data[i]._childrenOptions.data.state != null) {
newSpan.appendChild(document.createTextNode("Re-Up"));
newSpan.className = "change_state btn btn-success btn-xs";
}
else {
newSpan.appendChild(document.createTextNode("Down"));
newSpan.className = "change_state btn btn-danger btn-xs";
}
actual_row.appendChild(newSpan);
}
cmp += 1;
if (cmp == item.children._data.length)
One_Time = true;
if (One_Time) {
addClickListner(item, i, treeview);
One_Time = false;
cmp = 0;
}
}

function addClickListner(item, i, treeview) {
$(".change_state").click(function (event) {
var name_Promo_Rm = event.target.parentNode.children[1].textContent;
var User_Select = event.view.Parcours.transport.read.data.user_id;
$.ajax({
url: '@Url.Action("ChangeStatutBase", "Users")',
type: 'GET',
dataType: 'json',
data: { Name_Promo: name_Promo_Rm, User_id: User_Select },
});
refreshTree(treeview);
})
}

// Refresh tree
function refreshTree(treeview) {
// Save open items
saveExpandedItems(treeview);
// Reload data source
treeview.dataSource.read();
// Load open items
console.log("OKKKKKKK");
setTimeout(loadExpandedItems(), 600);

}

最佳答案

我已经解决了我的问题,在底部的“setTimeout”中,我在第一个参数中放置了“()”,它没有暂停,数据没有时间加载。

关于javascript - 读取 Kendo Tree 后未定义 Tree_view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39352054/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com