【问题标题】:Datatable: Skipping empty entries while sorting数据表:排序时跳过空条目
【发布时间】:2020-03-19 06:54:02
【问题描述】:

我正在尝试在跳过空条目的同时对数据表中的电子邮件列进行排序,下面是代码 sn-p。我在 Datatable js files 之后添加了此代码。

    <script>

        jQuery.extend( jQuery.fn.dataTableExt.oSort, {
        "non-empty-string-asc": function (str1, str2) {
            if(str1 == "")
                return 1;
            if(str2 == "")
                return -1;
            return ((str1 < str2) ? -1 : ((str1 > str2) ? 1 : 0));
        },

        "non-empty-string-desc": function (str1, str2) {
            if(str1 == "")
                return 1;
            if(str2 == "")
                return -1;
            return ((str1 < str2) ? 1 : ((str1 > str2) ? -1 : 0));
        }
    } );


    var dataTable = $('#example').dataTable({
        columnDefs: [
           {type: 'non-empty-string', targets: ['email']} // define 'name' column as non-empty-string type
        ]
    });

</script>

以下是我的列名

$columns = array(
     array( 'db' => 'country',  'dt' => 0 ),
    array( 'db' => 'city',   'dt' => 1 ),
    array( 'db' => 'name',     'dt' => 2 ),

    array( 'db' => 'contact1', 'dt' => 3),
    array( 'db' => 'contac2',  'dt' => 4 ),
     array( 'db' => 'email',     'dt' => 5),
    array( 'db' => 'project', 'dt' => 6 ),
    array( 'db' => 'national',  'dt' => 7),
    array( 'db' => 'developer',   'dt' => 8 ),

);

上面的代码没有对要求的问题进行排序,也尝试通过索引,但没有奏效,请指教。

【问题讨论】:

  • 你的意思是根本没有排序发生,或者它没有按照你想要的顺序发生?浏览器控制台有什么要说的吗? “以下是我的列名” - 不是很有帮助,您需要向我们展示您实际上是从这些数据中制作什么。
  • 一旦数据被排序,我希望空行在最后显示它们在排序时显示在开始或中间

标签: javascript php jquery sorting datatable


【解决方案1】:

对于空字符串情况,您的逻辑似乎是错误的。

根据我的理解,您希望将所有内容都推为空以结束 asc 和 desc。

但在您的逻辑中,您传递 1 和 -1 的行为与其他字符串相同。

你的代码应该是这样的

jQuery.extend( jQuery.fn.dataTableExt.oSort, {
    "non-empty-string-asc": function (str1, str2) {
        if(str1 == "" || str2 == "")
            return -1; // pushes to last 
        return ((str1 < str2) ? -1 : ((str1 > str2) ? 1 : 0));
    },
    "non-empty-string-desc": function (str1, str2) {
        if(str1 == "" || str2 == "")
            return -1; // pushes to last 
        return ((str1 < str2) ? 1 : ((str1 > str2) ? -1 : 0));
    }
} );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多