多列的 Dojo 数据网格过滤器

Posted

技术标签:

【中文标题】多列的 Dojo 数据网格过滤器【英文标题】:Dojo data grid filter for multiple columns 【发布时间】:2014-10-06 07:09:31 【问题描述】:

我想根据or 条件过滤数据网格中的所有列。 对于单个列(名称)过滤器,我尝试了下面的函数并且它工作正常。

grid.filter( name: "*" + value + "*"  );

现在我想将此过滤器用于网格上的多个列,我尝试了下面的代码,但它不起作用:

grid.filter(name:"*" + value + "*" || solution:"*" + value + "*");

请帮助我为网格上的多列过滤器提供合适的代码。我正在使用 Dojo 1.8.1。

【问题讨论】:

【参考方案1】:

为过滤目的创建隐藏列,并放入要过滤的连接数据。

如果您的数据存储区数据是:

data=[
 name: "smartphone", solution: "use iPhone instead iPod",
 name: "tablet",     solution: "use iPad instead iPod",
 name: "iPad",       solution: "use it"
]

添加用于过滤的列与其他列的连接数据:

data=[
 name: "smartphone", solution: "use iPhone instead iPod", forFiltering: "smartphone use iPhone instead iPod",
 name: "tablet",     solution: "use iPad instead iPod",   forFiltering: "tablet use iPad instead iPod",
 name: "iPad",       solution: "use it",                  forFiltering: "iPad use it"
]

然后对该列进行过滤:

grid.filter(forFiltering:"*" + value + "*");

【讨论】:

如果可以,请给出一个编码示例。 @dori-naji 解决方案适用于:'condition1 and condition2',Swpno 要求:'value is in field1 or in field2'【参考方案2】:

如果我正确理解您的问题,您可以简单地用逗号分隔过滤器的两个参数。所以而不是grid.filter(name:"*" + value + "*" || solution:"*" + value + "*");

你应该使用grid.filter(name:"*" + value + "*",solution:"*" + value + "*" );

你可以在jsfiddle查看这个工作示例

【讨论】:

以上是关于多列的 Dojo 数据网格过滤器的主要内容,如果未能解决你的问题,请参考以下文章

dojo 增强网格过滤器 - 以编程方式设置列 A 大于某个数字

如何在增强网格中添加过滤器

在 Dojo 数据网格中添加一行

数据网格 Dojo 中的 href 单元格

在 dojo 数据网格中实现超链接

Dojo 使用 JsonRestStore 重新加载网格数据