【发布时间】:2014-10-28 18:06:31
【问题描述】:
我有一些自定义的树节点;
因此 treeview 的常规节点功能将不起作用(追加、删除等...)
所以我使用 jQuery 来添加、重命名、删除节点;
一切都很好,除了当我添加一个新节点时; 我使用 jQuery 克隆一个节点并将新节点添加到树视图中(我更新了节点的所有自定义属性);
问题:
新克隆节点的uid与克隆节点相同;我尝试将“1”附加到新的uid,但它会导致左右抛出错误;我知道 uid 是一个 GUID,但还有更多吗?场景逻辑背后是否有一些奇怪的东西阻止我更改节点的 uid?
这是示例 javascript(这是在对服务器进行 ajax 调用并更新数据库之后;我不想刷新整个树;而我只想将节点添加到 javascript 端的树中) :
function AddNew(newlyAddedJob)
{
var newJobId = newlyAddedJob.JobId;
var parentJobId = newlyAddedJob.ParentJobId;
var newJobIdCrums = newlyAddedJob.JobIdCrums;
var parentJobIdCrums = newJobIdCrums.substring(0, newJobIdCrums.indexOf(parentJobId) + parentJobId.toString().length);
var trv = $("#" + trvMonitorListId).data("kendoTreeView");
var jParent = "#" + trvMonitorListId + "> * li[data-jobidcrums='" + parentJobIdCrums + "']";
var jSibiling = "#" + trvMonitorListId + "> * li[data-jobidcrums='" + parentJobIdCrums + "']> ul > li";
var jSelector = jSibiling;
if ($(jSibiling).length < 1)
{
jSelector = jParent;
}
var newUId = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c)
{
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
var aNode = $(jSelector)[0];
var newNode = $(aNode).clone();
var origUid = $(jSelector).attr("data-uid");
newNode.attr("id", newJobId);
newNode.attr("data-jobId", newJobId);
newNode.attr("data-parentJobId", parentJobId);
newNode.attr("data-jobIdCrums", newlyAddedJob.JobIdCrums);
newNode.attr("data-uid", newUId);
$(jParent).append(newNode);
var jNewNodeSelector = "#" + trvMonitorListId + "> * li[data-jobidcrums='" + newlyAddedJob.JobIdCrums + "'] > div > * a";
$(jNewNodeSelector)[0].innerText = "Stuff and more ...";
$(jSelector + " * span.k-in.k-state-selected").toggleClass("k-in k-state-selected", "k-in");
//var domText = $(jselector + "di");
trv = $("#" + trvMonitorListId).data("kendoTreeView");
trv.select(newNode);
GetMonitorDetails(newJobId, parentJobId);
}
【问题讨论】:
标签: c# jquery kendo-ui telerik kendo-treeview