【问题标题】:Datatables ajax sorting数据表ajax排序
【发布时间】: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 子句中显示的值。

标签: jquery datatables


【解决方案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")

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      相关资源
      最近更新 更多