【问题标题】:Ng-Grid Multiple Filtering in Column列中的 Ng-Grid 多重过滤
【发布时间】:2014-08-22 19:24:46
【问题描述】:

假设我在 ng-grid 中有许多数据列之一,如下所示:

状态

打开

关闭

打开

关闭

待处理

待处理

关闭

我可以只过滤一个,但我可以使用 ng-grid 有多个过滤器吗?例如,过滤“Open”会返回所有“Open”,但如果我想同时返回“Open”和“Closed”怎么办?所以结果会是这样的:

状态

打开

关闭

打开

关闭

关闭

感谢您的帮助!

【问题讨论】:

  • 客户端或服务器端过滤?
  • 错了,有没有分页?
  • 嘿@mainguy,带分页的服务器端过滤。尽管客户端演示也可能对其他人有所帮助。谢谢!

标签: angularjs ng-grid


【解决方案1】:

假设您在服务器端使用 PHP/MySQL,我会使用这种方法:

在过滤器输入中输入类似Open|Closed 的内容。 (或使用任何你喜欢的分隔符)

此搜索字符串将发送到您的服务器。

在服务器explode()这个搜索字符串变成一个数组。

$search=explode("|",$searchstring);

然后从该数组生成一个 sql 查询。

示例代码:

//The searchstring that was send via ajax
$searchstring="Open|Closed";
//The field in the DB you want to filter
$field="status";

//Generate the where condition
$search=explode("|",$searchstring);
$whereCond="";
while (list($key, $val) = each($search)) {
    $whereCond.= "`".$field."` ='".$val."' OR " ;
}
//remove the last unnecessary OR
$whereCond = substr_replace( $whereCond, "", -3 );

//Generate the query
$query="SELECT * FROM `table` WHERE ( ".$whereCond." )";
//Fetch data from the DB and return it to your App

这应该生成如下查询:

SELECT * FROM `table` WHERE ( `status` ='Open' OR `status` ='Closed' ) 

这样您可以输入任意数量的OR条件。

注意适当数量的空格并在查询中使用正确的引号。

如果您使用另一个堆栈,则必须找出自己的查询生成器。但基本上它归结为这种方法。如果您使用的是服务器端数据,则必须在服务器端进行过滤。

可以在官方 ng-grid 网站here 上找到客户端示例。

服务器端分页示例实际上是客户端,它只是从服务器获取一个大的 json 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2021-09-11
    • 2014-11-25
    相关资源
    最近更新 更多