数据表ajax排序
Posted
技术标签:
【中文标题】数据表ajax排序【英文标题】:Datatables ajax sorting 【发布时间】:2012-05-14 03:28:29 【问题描述】:我在按升序排序 ajax 数据表时遇到了一些麻烦,因为 mysql 中的默认值是 NULL 或 0,我不想显示它们。例如,在我的表中,我有:
item | value
-----+------
a | 2
b | 3
c | 4
d | NULL
降序排序效果很好,但是升序会首先显示“d”,我不希望有“d”。似乎也无法自定义js订单,因为这是ajax,所以订单是直接在db中完成的。
我该如何解决这个问题?
【问题讨论】:
我认为你把你的技术搞混了。您从表中提取的排序顺序取决于您的选择案例。仅仅因为您按 1 顺序将其放入表中并不意味着它会以这种方式出现。 Ajax 只是一种在客户端和服务器之间进行通信的方法,因此您的标题绝对没有意义。您可以排除您不想在 sql select 语句中的 WHERE 子句中显示的值。 【参考方案1】:您可以通过这种方式控制 null 的排序方式:
select item, value
from ...
order by case when value is null then 0 else 1 end descending, -- or ascending (I do not full understud your question)
value ascending -- or descending (idem)
【讨论】:
【参考方案2】:如果您不希望 d 在那里,请将其过滤掉。 WHERE value IS NOT NULL
问题没有多大意义,如果你给我们当前的记录、当前的结果、预期的结果会更容易。
【讨论】:
我不想过滤掉它,我只想在排序时不考虑空值,但我希望它们在表中。【参考方案3】:当对 Jquery DataTable 使用服务器端调用时,您可以在用于使用此 order by 子句填充表的 select 语句处解决问题:
.order("case when "column_selected" is null then -9999999 else "column_selected" end "direction_sorted")
【讨论】:
以上是关于数据表ajax排序的主要内容,如果未能解决你的问题,请参考以下文章
Handsontable 通过 json/ajax 对来自后端数据库的数据进行排序
Laravel:如何在数据表中使用 ajax 对数据进行排序?