Javascript 剑道工具栏附加不工作

Javascript 剑道工具栏附加不工作,javascript,kendo-ui,grid,telerik,Javascript,Kendo Ui,Grid,Telerik,我正在尝试在使用以下函数后附加剑道网格工具栏:: 1) 我将工具栏设置为:: var toolbar = $("#Grid").find(".k-grid-toolbar").html(); 2) 然后,在使用Grid.setOptions(JSON.parse(options))对网格进行一些更改后,导致工具栏消失,我再次将工具栏作为以下内容附加到网格: $("#Grid").find(".k-grid-toolbar").html(toolbar); 这里正确地附加了工具

我正在尝试在使用以下函数后附加剑道网格工具栏::

1) 我将工具栏设置为::

    var toolbar = $("#Grid").find(".k-grid-toolbar").html();
2) 然后,在使用
Grid.setOptions(JSON.parse(options))
对网格进行一些更改后,导致工具栏消失,我再次将工具栏作为以下内容附加到网格:

    $("#Grid").find(".k-grid-toolbar").html(toolbar);
这里正确地附加了工具栏,但我无法使用这些功能(即工具栏内部的下拉菜单)

如何使工具栏下拉菜单正常工作

提前感谢

获取
html()
方法只提供html代码,而不提供附加到此html元素的JavaScript。因此,当您将HTML代码注入工具栏时,需要再次调用附加到元素的JavaScript。如果您想要获得剑道小部件配置,例如dropdownList,则需要从小部件调用
选项
数据源

例如:

如果添加到工具栏的元素始终相同,我建议您创建一个以网格为参数的函数(如果数据发生更改,则创建数据):


顺便说一句,如果您将工具栏配置和模板添加到grid.setOptions(),它可能不会首先消失:)

您能显示一个重现原始问题的JSFIDLE/JSBin/SO代码段吗?例如,
setOptions
在哪里使工具栏消失?@OnaBai这是一段代码。当我们添加工具栏时,工具栏会停止其功能。这里有两个问题:第一,没有保存和恢复工具栏,
JSON.stringify
不执行深度复制,因此实际上没有保存
DropDownList
定义,这就是为什么在执行
setOptions
时,会将
DropDownList
视为
输入的原因;第二,使用
HTML()
保存HTML时,只复制DOM代码,而不复制与之关联的数据和事件,重新应用时,只会产生视觉效果。您需要保存所有选项吗?还是只保存排序、列定义和其他一些选项就足够了?@OnaBai我还需要使用下拉列表的选定值保存所有选项。但是我怎么做呢?重新初始化DropDownList,但是您也需要保存DropDownList值,否则在重新初始化之后,您在DropDownList中有过滤器,但没有正确的值
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'});
}