[英]JS Grid filter on checkbox
I have a JSGRID where I implemented filtering like this: 我有一个JSGRID,在其中实现了这样的过滤:
criteria = filter;
var d = $.Deferred();
if (DATA) {
var filteredData = $.grep(DATA, function(item, idx) {
for (var key in filter) {
var value = filter[key].toLowerCase();
if (value.length > 0) {
if (((item[key]).toString()).toLowerCase().indexOf(value) == -1)
return false;
}
}
return true;
});
d.resolve(filteredData);
return d.promise();
DATA is a local copy of my json object (to save a trip to the server when I only want to filter). DATA是我的json对象的本地副本(用于在我只想过滤时保存到服务器的旅行)。
This all is working fine but now I added a checkbox field to the grid. 一切工作正常,但现在我向网格添加了一个复选框字段。 Now when I filter I get an error: " Object doesn't support property or method 'toLowerCase'" 现在,当我进行过滤时,我得到一个错误:“对象不支持属性或方法'toLowerCase'”
I guess I try to lowercase a (type) checkbox field. 我想我尝试小写(类型)复选框字段。 I cannot find out how to change my code so the filtering works on all kind of fields. 我找不到更改代码的方法,因此过滤可在所有类型的字段上使用。
Can someone help me out? 有人可以帮我吗?
var filteredData = $.grep(DATA, function(item, idx) { for (var key in filter) { var value = filter[key] if(typeof value === "string"){ if (value.length > 0 && item[key].toString().toLowerCase().indexOf(value.toLowerCase()) === -1){ return false; } } else { if(value === undefined){ } else if(value){ //checkbox is checked //do something to compare the value to the label/name } else { //checkbox is false } } } return true; })
This is my working code: 这是我的工作代码:
loadData: function(filter) {
criteria = filter;
var d = $.Deferred();
if (DATA) {
var filteredData = $.grep(DATA, function(item, idx) {
for (var key in filter) {
if(typeof filter[key] === "string"){
var value = filter[key].toLowerCase();
if (value.length > 0) {
if (((item[key]).toString()).toLowerCase().indexOf(value) == -1)
return false;
}
}
else{
var value2 = filter[key]
if (filter[key] === undefined){
return true;
}
else if (item[key] != value2) {
return false;
}
}
}
return true;
});
d.resolve(filteredData);
return d.promise();
}
If filter[key] is undefined there is no filter on the checkbox so all records have to be shown. 如果未定义filter [key],则复选框上将没有过滤器,因此必须显示所有记录。 I have to figure out what to do when other field types are in the grid (integers or date or....) So my solution might not be the best yet. 我必须弄清楚当网格中有其他字段类型(整数或日期或...)时该怎么办,所以我的解决方案可能不是最好的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.