【问题标题】:Kendo treeview and custom nodesKendo 树视图和自定义节点
【发布时间】: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


    【解决方案1】:

    你得到什么错误?您可以发布任何源代码吗?

    也许您应该只生成一个新的随机 guid,而不是基于当前的。

    【讨论】:

    • 我更新了我的问题以包含 javascript;还更新了我的代码以添加一个虚拟 guid,但这也不起作用;发生的情况是,它显示 trv.select(newNode) 的最后一行会引发错误,提示“无法获取属性‘set’”。另外,我认为新 ID 会导致我的页面刷新,这确实很奇怪,但很有趣 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    相关资源
    最近更新 更多