2014-12-03 68 views
1

我尝试使用以下::剑道工具栏追加不工作

1)我得到了工具栏作为::

var toolbar = $("#Grid").find(".k-grid-toolbar").html(); 

2的一些功能后,追加我的剑道网格工具栏),然后经过使用grid.setOptions(JSON.parse(options))一些改变网格导致消失的工具栏的我又追加工具栏格为::

$("#Grid").find(".k-grid-toolbar").html(toolbar); 

下面的工具栏是正确添加了,但我无法使用这些功能(即。在工具栏内下拉菜单)。

我怎样才能让我的工具栏下拉菜单工作?

预先感谢

+0

你能表现出的jsfiddle/JSBin消失/ SO片段那重现了原始问题?即在哪里'setOptions'让你的工具栏消失? – OnaBai 2014-12-03 14:51:18

+0

@OnaBai http://dojo.telerik.com/@rjha999/IlOHO这里是摘录。在哪个工具栏中,当我们追加它时停止其功能 – Rahul 2014-12-04 01:47:26

+0

有两个问题:第一,如果没有保存和恢复工具栏,“JSON.stringify”不会执行深层复制,因此实际上不保存“DropDownList”定义,这就是为什么当你做一个'setOptions'时,你会看到'DropDownList'为'input';第二步使用'html()'保存HTML,你只复制DOM代码,但不复制与它相关的数据和事件,当你重新应用它时,你只有视觉效果。你需要保存所有的选项还是足够保存只有排序,列定义和更多? – OnaBai 2014-12-04 05:59:39

回答

0

获取html()方法只提供的HTML代码,而不是附接的JavaScript从该HTML中的元素。因此,当您在工具栏中注入HTML代码时,需要再次调用附加到元素的JavaScript。如果你想获得一个kendo widget配置,例如一个dropdownList,你需要从你的widget中调用optionsdataSource

如:

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(),也许它不会摆在首位:)