获取html()
方法只提供的HTML代码,而不是附接的JavaScript从该HTML中的元素。因此,当您在工具栏中注入HTML代码时,需要再次调用附加到元素的JavaScript。如果你想获得一个kendo widget配置,例如一个dropdownList,你需要从你的widget中调用options
和dataSource
。
如:
var $toolbar = $("#Grid").find(".k-grid-toolbar"),
toolbar = $toolbar.html(),
// Dropdown list Element
$ele = $("input[name=myInput]", $toolbar.get(0)),
// Dropdown list Widget object
ddl = $ele.data("kendoDropDownList"),
cfg = ddl.options;
// toJSON returns objects without the observer properties
cfg.dataSource = ddl.dataSource.data().toJSON();
// HERE YOU REBUILD YOUR TABLE
$toolbar.html(toolbar);
$("input[name=myInput]", $toolbar.get(0)).kendoDropDownList(cfg);
如果您添加到工具栏的内容都是一样的,我建议你创建,而不是一个与电网作为参数函数(和数据,如果该数据的变化):
function setToolbarContent(grid){
var $toolbar = grid.find(".k-grid-toolbar");
$toolbar.html('My HTML String');
$toolbar.find("input[name=myInput]").kendoDropDownList({my: 'cfg'});
}
顺便说一下,如果你添加工具栏配置和模板grid.setOptions(),也许它不会摆在首位:)
你能表现出的jsfiddle/JSBin消失/ SO片段那重现了原始问题?即在哪里'setOptions'让你的工具栏消失? – OnaBai 2014-12-03 14:51:18
@OnaBai http://dojo.telerik.com/@rjha999/IlOHO这里是摘录。在哪个工具栏中,当我们追加它时停止其功能 – Rahul 2014-12-04 01:47:26
有两个问题:第一,如果没有保存和恢复工具栏,“JSON.stringify”不会执行深层复制,因此实际上不保存“DropDownList”定义,这就是为什么当你做一个'setOptions'时,你会看到'DropDownList'为'input';第二步使用'html()'保存HTML,你只复制DOM代码,但不复制与它相关的数据和事件,当你重新应用它时,你只有视觉效果。你需要保存所有的选项还是足够保存只有排序,列定义和更多? – OnaBai 2014-12-04 05:59:39