js动态设置restData的filter
在某些场景下需要在js中动态设置filter,可以调用数据组件的setFilter方法实现,然后调用数据集的刷新条件就会起作用
运算符目前支持: 等于eq、不等neq、大于gt、小于lt、大于等于gte、小于等于lte、字符匹配like、字符匹配(不区分大小写)ilike、字符不匹配nlike、字符不匹配(不区分大小写)nilike、包含inn、不包含ninn、为空isNull、非空isNotNull
如下: 1.过滤字段等于一个值用eq:
var data = this.comp("数据集的id");
var filter = [];
filter.push({op:"LBRAC"});
filter.push({name:"fname",value:"张三",op:"eq"});
filter.push({op:"RBRAC"});
data.setFilter("eqfilter",filter);
data.refreshData();
2.过滤字段包含某些值(等同于sql中的in),需要用inn:
var data = this.comp("数据集的id");
var filter = [];
filter.push({op:"LBRAC"});
filter.push({name:"fname",value:"张三,李四",op:"inn"});
filter.push({op:"RBRAC"});
data.setFilter("infilter",filter);
data.refreshData();
3.过滤字段字符匹配用like,不匹配用nlike,如果需要用通配符用*:
var data = this.comp("数据集的id");
var filter = [];
filter.push({op:"LBRAC"});
filter.push({name:"fname",value:"abc*",op:"nlike"});
filter.push({op:"RBRAC"});
data.setFilter("likefilter",filter);
data.refreshData();
4.过滤值为空,需要用isNull
var data = this.comp("数据集的id");
var filter = [];
filter.push({op:"LBRAC"});
filter.push({name:"fname",value:null,op:"isNull"});
filter.push({op:"RBRAC"});
data.setFilter("infilter",filter);
data.refreshData();
5.过滤值非空,需要用isNotNull
var data = this.comp("数据集的id");
var filter = [];
filter.push({op:"LBRAC"});
filter.push({name:"fname",value:null,op:"isNotNull"});
filter.push({op:"RBRAC"});
data.setFilter("infilter",filter);
data.refreshData();
6.日期过滤用gte或者lte
var data = this.comp("数据集的id");
var startDate=new Date();
startDate.setDate(5);
startDate = wx.Date.toString(startDate, wx.Date.STANDART_FORMAT_SHOT);
var endDate = wx.Date.toString(new Date(), wx.Date.STANDART_FORMAT_SHOT);
var filter = [];
filter.push({op:"LBRAC"});
filter.push({name:"fcreateDate",value:startDate,op:"gte"});
filter.push({name:"fcreateDate",value:endDate,op:"lte"});
filter.push({op:"RBRAC"});
data.setFilter("customfilter",filter);
data.refreshData();
7.日期时间过滤用gte或者lte
var data = this.comp("数据集的id");
var endDate = wx.Date.toString(new Date(), wx.Date.STANDART_FORMAT);
var filter = [];
filter.push({op:"LBRAC"});
filter.push({name:"fcreateTime",value:"2020-04-02T00:00:00.000Z",op:"gte"});
filter.push({name:"fcreateTime",value:endDate,op:"lte"});
filter.push({op:"RBRAC"});
data.setFilter("customfilter",filter);
data.refreshData();
8.多个调用用and或者or拼接
var data = this.comp("数据集的id");
var filter = [];
filter.push({op:"LBRAC"});
filter.push({name:"fname",value:"张三",op:"eq",kind:"or"});
filter.push({op:"LBRAC"});
filter.push({name:"fcode",value:"001",op:"eq"});
filter.push({name:"fadress",value:"上海",op:"eq",kind:"or"});
filter.push({op:"RBRAC"});
filter.push({op:"RBRAC"});
data.setFilter("customfilter",filter);
data.refreshData();
9.清除所有的过滤调用
var data = this.comp("数据集的id");
data.filters.clear();
data.refreshData();
10.清空js设置的某个过滤条件
setFilter的第一个参数就是要清空的filter的名字,第二个参数为空
var data = this.comp("数据集的id");
data.setFilter("customfilter","");
data.refreshData();
11.获取所有的过滤条件
var data = this.comp("数据集的id");
data.buildFilter();//返回的是数组