假设我在ng-grid中有许多数据列之一,如下所示:
打开
闭
打开
闭
待定
待定
闭
我只能过滤一个,但是我可以使用ng-grid多个过滤器吗?例如,过滤“Open”会让我回到所有“开放”的状态,但是如果我想要回到“开放”和“关闭”状态呢?结果就像是:
打开
闭
打开
闭
闭
感谢您的帮助!
答案 0 :(得分: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文件。