2016-05-17 2 views
-1

У меня есть дерево дерева кендо, отображающее данные. Но теперь я хочу редактировать этикетки Treeview. Пробовал несколько способов и искал ее, но coudnlt нашел правильное решение. Ниже мой код может предложить любое решение. Моя текущая ситуация заключается в том, что текстовое поле открывается, если я нажимаю на значок редактирования и меняю текст и нажимаю «Сохранить», но ничего не происходит.Kendo Treeview node Редактировать/Обновить

Edit Template

<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> 

TreeView:

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(); 
}) 

}

ответ

1

Этот обработчик события должен быть применены к внешнему Windo ж, не 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(); 
}) 
+0

На самом деле щелчок не вызывает – Nethra

+0

здесь работает пример с внешним редактором, просто изменить шаблон раздела http://dojo.telerik.com/@gyoshev/IWap –

+0

Я выполняю тот же пример – Nethra