如何修改字符串过滤器中输入的值

28

我在我的网格中为3列设置了一个字符串过滤器,目前它能够正常工作。但是在第三列,其dataindex为abc的列中,我希望修改输入的值。

例如,如果我按0,则会过滤出所有包含0的数据。我想用'No'代替0来进行过滤。同样地,我想用'Yes'代替1来过滤数据中的1。

以下是我创建过滤器的代码。

this.filters = new Ext.ux.grid.GridFilters({
    filters: this.filter,
    local: true,
    autoReload: false,
});
this.features = [this.filters];
this.plugins = [this.filters];

插入过滤器的代码。

gridEl.filter.push({
    type: header.getAttribute("FILTER"),
    dataIndex: header.getAttribute("DATAINDEX"),
    encode: false,
    metaID: header.getAttribute("M"),
});

感谢您的帮助。


2
你应该向我们展示你的代码。 - kevin ternet
1
你可以展示一下你的代码和尝试过的方法吗? - Yosvel Quintero
@YosvelQuintero 现在对你来说没问题了吗? - David
JSFiddle/Sencha Fiddle会更容易理解。 - Vinod Gubbala
@VinodGubbala请查看此过滤器。我想使用我定义的特定输入。http://docs.sencha.com/extjs/4.2.0/extjs-build/examples/grid-filtering/grid-filter-local.html - David
1个回答

11
根据您的示例http://docs.sencha.com/extjs/4.2.0/extjs-build/examples/grid-filtering/grid-filter-local.html,创建自己的BooleanFilter并添加条件。请参见下面我的代码片段。
Ext.define('MyFilter.CustomBooleanFilter', {
   extend: 'Ext.ux.grid.filter.StringFilter',
   alias: 'gridfilter.customboolean',

   validateRecord : function (record) {
       var rValue = record.get(this.dataIndex),
           fValue = this.getValue();
       return rValue == fValue || rValue == (fValue == "1" || "true".indexOf(fValue.toLowerCase()) == 0 || "yes".indexOf(fValue.toLowerCase()) == 0);
    }
});

点击这里查看演示。 https://fiddle.sencha.com/#fiddle/1f5l

如果您不需要这个,请告诉我。我根据自己的理解做了这个 编辑:但是我认为如果这是您想要的内容,那么请使用布尔过滤器来更改所需的文本。像是“是”和“否”。这对用户来说比手动输入更方便,因为只有两个值。


我正在处理这个问题。我假设你的编辑已经完成了。等我完成后,我会通知你。 - David
添加了我的最后一条评论。抱歉编辑这么多次。我只是很兴奋能够玩这个……:D。以前从未见过这些...... - Vinod Gubbala
希望它能正常工作。你可以在fiddle上分享一个小例子,我可以帮助你解决它。 - Vinod Gubbala
你的返回语句基于是和否或真和假。 - David
最后一个问题。列的筛选类型将是字符串或布尔值。因为当我设置布尔值时,我会得到“是”和“否”的复选框。 - David
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接