数据表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排序的主要内容,如果未能解决你的问题,请参考以下文章

数据表ajax按方法排序

Handsontable 通过 json/ajax 对来自后端数据库的数据进行排序

Laravel:如何在数据表中使用 ajax 对数据进行排序?

使用带有分页和排序的 ajax 将行动态添加到数据表

如何使用 jquery/ajax 对已经从数据库中获取的数据进行排序?

没有 HTML 表单的 Laravel 5 AJAX 排序顺序数据(jQuery 可排序)