无法以编程方式检查 Kendo 网格的多 select 复选框过滤器
Unable to check the multi-select checkbox filter of the Kendo Grid Programmatically
我正在尝试以编程方式检查 Kendo 网格的多 select 复选框的复选框,虽然这是设置输入标签属性值的简单功能,但似乎并不为我工作。
我试过以下方法
1.<input type='checkbox' checked='checked'/>
2. <input type='checkbox' checked='true'/>
3. <input type='checkbox' checked/>
4. $(".k-multicheck-wrap >div >input").attr("checked", "checked");
5. $(".k-multicheck-wrap >div >input").attr("checked", "true");
None 这些选项似乎在网格列的过滤器控件中起作用。但是如果我在这个控件之外创建一个复选框它确实有效
Here is the code I am trying to work on
请帮我解决这个问题。提前致谢!
它是这样工作的,因为及时,当你试图检查那些复选框时 - 它们还不存在。它们是在用户单击过滤器图标后创建的。
因此,filterMenuInit 事件在过滤器创建后触发。你可以在那里做你的逻辑。
注意:如果用户单击过滤器图标,将始终触发该事件。它只会被调用一次——在初始化之后。并且将为用户打开过滤器选项的每一列调用它。
这里是demo如何使用它。
$(document).ready(function(){
$("#grid").kendoGrid({
columns: [ {
field: "country",
filterable: {
multi:true,
itemTemplate: function(e) {
return "<div><input type='checkbox' data-text='#= data.country #' /><span>#= data.country|| data.all #</span></div>"
}
}
}],
filterable: true,
filterMenuInit: function(e){
if(e.field == "country")
{
//$(".k-multicheck-wrap >div >input").prop("checked", true)
$(".k-multicheck-wrap >div >input[type=checkbox][data-text='BG']").prop("checked", true)
}
},
dataSource: [ { country: "BG" }, { country: "USA" } ]
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2019.1.220/js/kendo.all.min.js"></script>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.220/styles/kendo.common.min.css"/>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.220/styles/kendo.rtl.min.css"/>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.220/styles/kendo.silver.min.css"/>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.220/styles/kendo.mobile.all.min.css"/>
<div id="grid"></div>
我正在尝试以编程方式检查 Kendo 网格的多 select 复选框的复选框,虽然这是设置输入标签属性值的简单功能,但似乎并不为我工作。
我试过以下方法
1.<input type='checkbox' checked='checked'/>
2. <input type='checkbox' checked='true'/>
3. <input type='checkbox' checked/>
4. $(".k-multicheck-wrap >div >input").attr("checked", "checked");
5. $(".k-multicheck-wrap >div >input").attr("checked", "true");
None 这些选项似乎在网格列的过滤器控件中起作用。但是如果我在这个控件之外创建一个复选框它确实有效
Here is the code I am trying to work on
请帮我解决这个问题。提前致谢!
它是这样工作的,因为及时,当你试图检查那些复选框时 - 它们还不存在。它们是在用户单击过滤器图标后创建的。
因此,filterMenuInit 事件在过滤器创建后触发。你可以在那里做你的逻辑。
注意:如果用户单击过滤器图标,将始终触发该事件。它只会被调用一次——在初始化之后。并且将为用户打开过滤器选项的每一列调用它。
这里是demo如何使用它。
$(document).ready(function(){
$("#grid").kendoGrid({
columns: [ {
field: "country",
filterable: {
multi:true,
itemTemplate: function(e) {
return "<div><input type='checkbox' data-text='#= data.country #' /><span>#= data.country|| data.all #</span></div>"
}
}
}],
filterable: true,
filterMenuInit: function(e){
if(e.field == "country")
{
//$(".k-multicheck-wrap >div >input").prop("checked", true)
$(".k-multicheck-wrap >div >input[type=checkbox][data-text='BG']").prop("checked", true)
}
},
dataSource: [ { country: "BG" }, { country: "USA" } ]
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2019.1.220/js/kendo.all.min.js"></script>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.220/styles/kendo.common.min.css"/>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.220/styles/kendo.rtl.min.css"/>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.220/styles/kendo.silver.min.css"/>
<link rel="stylesheet" href="https://kendo.cdn.telerik.com/2019.1.220/styles/kendo.mobile.all.min.css"/>
<div id="grid"></div>