【问题标题】:Kendo Treeview node Edit/UpdateKendo Treeview 节点编辑/更新
【发布时间】:2016-05-17 18:38:57
【问题描述】:

我有一个显示数据的剑道树状视图。但现在我想编辑 Treeview 标签。尝试了几种方法并用谷歌搜索,但找不到正确的解决方案。下面是我的代码,任何人都可以提出解决方案。我目前的情况是,如果我点击编辑图标并更改文本并点击保存,则文本框正在打开,但没有任何反应。

编辑模板

 <script id="editTemplate" type="text/x-kendo-template">
    <label>Text: <input class="k-textbox" value="#=node.LINK#" /></label>
    <button class="k-button k-primary">Save</button>
</script>

树视图:

function treeView() {
treeMenu = new kendo.data.HierarchicalDataSource({
    template: kendo.template($("#treeview-template").html()),
    schema: {
        data: function (response) {
            var rdata = {};
            if (response.d) {
                rdata = JSON.parse(response.d);
            }
            else {
                rdata = response;
            }
            return rdata; // ASMX services return JSON in the following format { "d": <result> }.
        },
        schema: {
            model: {
                hasChildren: true,
                id: "id",
                children: "HasChildren",
                hasChildren: "HasChildren",
                fields: {
                    ID: { editable: false, nullable: false, type: "string" },
                   LABEL: { editable: true, nullable: true, type: "string" },
                  LINK: { editable: true, nullable: true, type: "string" },

                },
            }
        }
    },
    transport: {
        read: {
            url: "/Services/TreeServices.asmx/getTree",
            contentType: "application/json; charset=utf-8",
            type: "POST",
            datatype: "json"

        },
          parameterMap: function (data, type) {
            if ((type == "read") || (type == "update") || (type == "create") || (type == "destroy")) {
                console.log('parameterMap: data => ' + JSON.stringify(data));
                return JSON.stringify(data);
            } else {
                return data;
            }
        }
    },
  });

节点编辑功能:

function editNode() {
var editTemplate = kendo.template($("#editTemplate").html());
var treeview = $("#treeview").data("kendoTreeView");
var selectedNode = treeview.select();
var node = treeview.dataItem(selectedNode);
var data = { node: node }; //A value in JavaScript/JSON
var result = template(data); 

$("<div />")
    .html(editTemplate({ node: node}))
    .appendTo("body")
    .kendoWindow({
        modal: true,
        //visible: true,
        deactivate: function () {
            this.destroy();
        }
    })

$("#treeview").on("click", ".k-primary", function (e) {
   var dialog = node.closest("[data-role=window]").getKendoWindow();
    var textbox = dialog.element.find(".k-textbox");        
    node.set("text", textbox.val());    
    dialog.close();
})

}

【问题讨论】:

    标签: jquery asp.net kendo-ui treeview kendo-treeview


    【解决方案1】:

    该事件处理程序应该应用于外部窗口,而不是treeView

    $("<div />")
        .html(editTemplate({ node: node}))
        .appendTo("body")
        .kendoWindow({
            modal: true,
            //visible: true,
            deactivate: function () {
                this.destroy();
            }
        })
    .on("click", ".k-primary", function (e) {
        //e.preventDefault();        
        var dialog = $(e.currentTarget).closest("[data-role=window]").getKendoWindow();
        var textbox = dialog.element.find(".k-textbox");    
        node.text = undefined; // force refresh of dataItem
        node.set("text", name);     
        dialog.close();
    })
    

    【讨论】:

    • 其实点击没有触发
    • 这里是使用外部编辑器的工作示例,只需更改模板部分dojo.telerik.com/@gyoshev/IWap
    • 我也是按照这个例子来的
    • 更新了我的答案,很抱歉第一次看不懂你的问题
    • 但是您知道,您现在可以将breakpoint 放在该方法中并自行调试所有错误。我认为我们找到了主要问题
    猜你喜欢
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    相关资源
    最近更新 更多