Datatables Filtering - an exact match in smart seach
我想坚持使用数据表所具有的智能搜索(我键入时搜索)。问题是,我的专栏之一显示了以下值:人员和人员。因此,拥有数百万条记录,当我键入 "person" 时,我很难挖掘到 "person",而该列仅显示 "personnel"。
我不只想要完全匹配。这会让我在某些情况下输入全名:"person-xyz-123"。
有没有办法让我在引号中指定说"人"并告诉数据表我只想在我输入引号时进行精确搜索并且仍然坚持我的正常搜索?
咖啡脚本文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | $(xyz).ready -> $('#xyz').dataTable bProcessing: true bServerSide: true sDom:"<"top"T>rt<"bottom"lip><"clear">" oTableTools: sSwfPath:"../TableTools-2.1.5/media/swf/copy_csv_xls_pdf.swf" sAjaxSource: $('#xyz').data('source') .columnFilter aoColumns: [ { type:"text" }, { type:"text" }, { type:"text" }, { type:"text" }, { type:"text" }, { type:"text" }, { type:"text" }, { type:"text" }, { type:"select" values: [ {"value": 0,"label":"Failed"}, {"value": 1,"label":"Completed"}, {"value": 2,"label":"Processing"} ] } ] return |
(我假设使用 1.9 API,因为这似乎是您在问题中使用的。)
可以做你想做的事,但这意味着修改服务器端代码来响应你作为
如果
否则执行部分匹配。
有关 DataTables 发送到服务器的内容及其预期内容的完整文档在这里。
我创建了这个辅助函数来解决我的问题:
1 2 3 4 | def filter_helper(data) return"#{data[:name]} = :search", search:"#{params[data[:dt_name]].gsub!(/^"|"?$/, '') }" if"#{params[data[:dt_name]]}".chars.first ==""" return"#{data[:name]} like :search", search:"%#{params[data[:dt_name]]}%" if"#{params[data[:dt_name]]}".chars.first !=""" end |