2016-09-15 33 views
0

[更新]剑道UI - 自定义网格过滤:复选框不在每个工作单击

后,我做了如下所示: http://dojo.telerik.com/aqIXa 当我点击,例如产品名称过滤器,然后选择或取消选择所有项目,去其他领域例如单价,点击选择和取消选择所有我翻折到产品名称字段,并在过滤器现在是:

enter image description here

你可以看到,选择全部组合框创建一次,它会继续在我重复这些步骤之后创建。有没有人有这个想法,为什么它会发生?

我目前在Kendo工作,并尝试为每列制作自定义网格过滤器。 我用这个例子:initCheckboxFilter函数I加入,这创造复选框选择所有内部

http://dojo.telerik.com/iwAWU

var selectAllCheckbox= $("<div><input type='checkbox' id='checkAll' checked/> Select All</div>").insertBefore(".k-filter-help-text"); 

和函数I Implemeted一个外:

function clickMe(){ 
    $("#checkAll").click(function() { 
    if ($("#checkAll").is(':checked')) { 
     $(".book").prop("checked", true); 
    } else { 
     $(".book").prop("checked", false); 
    } 
}); 
} 

(.book为模板内部类:

var element = $("<div class='checkbox-container'></div>").insertAfter(helpTextElement).kendoListView({ 
      dataSource: checkboxesDataSource, 
      template: "<div><input type='checkbox' class='colDefFilter' value='#:" + field + "#' checked />#:" + field + "#</div>", 
     }); 

我还添加单价和UnitInStock字段:

function onFilterMenuInit(e) { 
     debugger; 
     if (e.field == "ProductName" || "UnitPrice" || "UnitInStock") { 
      initCheckboxFilter.call(this, e); 

     } 
     } 

这看起来像:

enter image description here

我第一次点击选择一些列过滤所有的复选框,它检查并取消所有的项目,它工作正常。当我尝试在其他列上执行此操作时,事件不会触发。有没有人知道什么是错的? 谢谢!

回答

2

你的问题是,你正在使用的ID为检查所有的复选框,这就是为什么从第一个下拉菜单,你需要使用checkAll作为类没有ID,然后改变你的clickMe((产品)

的jQuery总是选择复选框)函数像这样,它会工作:

function clickMe(){ 
     $(".checkAll").click(function() { 
     if ($(this).is(':checked')) { 
      $(this).closest('.k-filter-menu').find(".book").prop("checked", true); 
     } else { 
      $(this).closest('.k-filter-menu').find(".book").prop("checked", false); 
     } 
    }); 
    } 

这里是工作示例http://dojo.telerik.com/aqIXa

编辑:

您使用添加选择所有复选框的方式应该是这样的

var selectAllCheckbox= $("<div><input type='checkbox' class='checkAll' checked/> Select All</div>").insertBefore(e.container.find(".k-filter-help-text")); 

insted的这个

var selectAllCheckbox= $("<div><input type='checkbox' id='checkAll' checked/> Select All</div>").insertBefore(".k-filter-help-text"); 

否则会加重多种选择先前初始化过滤器的下拉列表中的所有复选框。

这是更新演示:http://dojo.telerik.com/aqIXa/4

+0

大把戏!不知道,谢谢,它现在的作品:) –

+0

很酷,如果它适合你,请你接受我的回答:) –

+0

我刚刚做到了! :D –