Kendo grid 包含数组的剑道UI网格筛选器单元格
我想过滤剑道网格中包含数组的特定列 网格配置是Kendo grid 包含数组的剑道UI网格筛选器单元格,kendo-grid,Kendo Grid,我想过滤剑道网格中包含数组的特定列 网格配置是 var resultsGrid = this.kendoGrid({ dataSource:{ data:[], pageSize:20 }, sortable: { mode: "multiple", allowUnsort: true }, filterable: {
var resultsGrid = this.kendoGrid({
dataSource:{
data:[],
pageSize:20
},
sortable: {
mode: "multiple",
allowUnsort: true
},
filterable: {
extra: false,
operators: {
string: {
startswith: "Starts with",
eq: "Is equal to",
neq: "Is not equal to"
}
}
},
pageable: {
pageSizes: true,
buttonCount: 5
},
scrollable: false,
columns: resultsColumns
}).data("kendoGrid");
return resultsGrid;
var resultsColumns = [
{field: "keys", filterable: true, headerTemplate: function(){return Ec.translatedLabel("authorityEntryCode");}, template: '#for(var i = 0; i < keys.length; i++){# #=keys[i].name# = #=keys[i].value# <br> #}#'},
{field: "state", filterable: true, headerTemplate: function(){return Ec.translatedLabel("state");}},
{field: "startDate", filterable: false, headerTemplate: function(){return Ec.translatedLabel("startDate");}},
{command: initGridCommands(), headerTemplate: function(){return Ec.translatedLabel("actions");}}
];
列配置为
var resultsGrid = this.kendoGrid({
dataSource:{
data:[],
pageSize:20
},
sortable: {
mode: "multiple",
allowUnsort: true
},
filterable: {
extra: false,
operators: {
string: {
startswith: "Starts with",
eq: "Is equal to",
neq: "Is not equal to"
}
}
},
pageable: {
pageSizes: true,
buttonCount: 5
},
scrollable: false,
columns: resultsColumns
}).data("kendoGrid");
return resultsGrid;
var resultsColumns = [
{field: "keys", filterable: true, headerTemplate: function(){return Ec.translatedLabel("authorityEntryCode");}, template: '#for(var i = 0; i < keys.length; i++){# #=keys[i].name# = #=keys[i].value# <br> #}#'},
{field: "state", filterable: true, headerTemplate: function(){return Ec.translatedLabel("state");}},
{field: "startDate", filterable: false, headerTemplate: function(){return Ec.translatedLabel("startDate");}},
{command: initGridCommands(), headerTemplate: function(){return Ec.translatedLabel("actions");}}
];
var resultsColumns=[
{field:“keys”,filterable:true,headerTemplate:function(){return Ec.translatedLabel(“authorityEntryCode”)},模板:'#for(var i=0;i#},
{field:“state”,filterable:true,headerTemplate:function(){return Ec.translatedLabel(“state”);},
{字段:“startDate”,filterable:false,headerTemplate:function(){return Ec.translatedLabel(“startDate”);},
{command:initGridCommands(),headerTemplate:function(){return Ec.translatedLabel(“操作”);}
];
我想用字段键过滤列
字段键是一个包含名称和值的对象数组,我希望使用值进行筛选
比如说
因此,当用户在屏幕截图中添加a1作为要过滤的第一行时
如果你对此有答案,请告诉我,这将对我有很大帮助,谢谢。不幸的是,在我看来,这很难做到。一般过程将需要绑定到,使用您自己的表单删除默认筛选器弹出窗口的内容,然后手动对所需的特定字段执行筛选。我不知道对数组字段执行过滤的内置方法。仅覆盖所需内容的黑客版本可能是:
filterMenuInit: function(e) {
if (e.field == "keys") {
var filterButton = e.container.find("button[type=submit]");
var clearButton = e.container.find("button[type=reset]");
var dataSource = jQuery("#grid").data("kendoGrid").dataSource;
//Get rid of default filter button...
filterButton.remove();
clearButton.parent().prepend("<button type='button' class='k-button k-primary'>Filter</button>");
var filterText = e.container.find(".k-textbox");
filterButton = e.container.find("button[type=button]");
filterButton.click(function(e) {
e.preventDefault();
dataSource.filter([
{
field: 'keys',
operator: function (items, filterValue) {
for(var i = 0; i < items.length; i++) {
if(items[i].value == filterText.val()) {
return true;
}
}
return false;
},
value: filterText.val()
}
]);
});
clearButton.click(function() {
dataSource.filter([]); //clear filters...
});
}
},
filterMenuInit:function(e){
如果(如字段==“键”){
var filterButton=e.container.find(“按钮[type=submit]”);
var clearButton=e.container.find(“按钮[type=reset]”);
var dataSource=jQuery(“网格”).data(“kendoGrid”).dataSource;
//摆脱默认的过滤器按钮。。。
filterButton.remove();
clearButton.parent().prepend(“过滤器”);
var filterText=e.container.find(“.k-textbox”);
filterButton=e.container.find(“button[type=button]”);
过滤器按钮。单击(函数(e){
e、 预防默认值();
dataSource.filter([
{
字段:'键',
操作员:函数(项、过滤器值){
对于(变量i=0;i
这段代码既快又脏,因此我鼓励您阅读有关的文档,并提出一个更干净的解决方案 非常感谢,你的解决方案对我帮助很大。我只是对filter操作符做了一些修改,以理解我需要的“contains”和“eq”操作。我也有一个问题,当我点击过滤器按钮,下拉菜单失去了它的价值,所以我做了一些修改。包含修改的代码段示例