【问题标题】:Add URL to jQuery Datatables data set?将 URL 添加到 jQuery Datatables 数据集?
【发布时间】:2011-10-08 15:14:08
【问题描述】:

我有一个动态构建的 jquery 数据表,这意味着每一行都是使用 php mysql 数据库调用构建的。创建表本身没问题,但有时我想为集合中显示的数据添加超链接。

例如:

ID   |    Date       |   Amount
----------------------------
1    | April 1, 2011 |  3.95
2    | April 5, 2011 |  4.55
3    | May 9, 2011   |  19.32 

问题是,上面的日期将是一个超链接,并且 URL 中的日期格式将是 YYYY-mm-dd 格式。

当我这样做时,datatables 想要将整个 URL 视为一个数据元素,因此我可以在事后对表进行任何排序。

以前有人遇到过这个问题吗?我似乎在网上找不到任何东西。

【问题讨论】:

  • 所以日期列看起来像:2011 年 5 月 9 日? ?
  • 那么请帮助我理解,因为这将根据 YYYY-mm-dd 日期进行排序。你能澄清一下你在找什么吗?
  • 这对您有帮助吗? stackoverflow.com/questions/1898621/…
  • @kasdega - 它不按 YYYY-mm-dd 排序
  • 我们的代码中某处的情况非常相似。如果我还有更多内容,我会看看能不能找到它。

标签: php jquery mysql ajax datatables


【解决方案1】:

要对非标准列进行排序,您可以定义特定的函数:在这里您可以找到其中的一些:http://datatables.net/plug-ins/sorting

在您的情况下,您可以像这样定义自己的排序函数:

jQuery.fn.dataTableExt.oSort['my-date-asc']  = function(a,b) {
    var x = a.match(/date=(.*?)"/)[1].toLowerCase();
    var y = b.match(/title="(.*?)"/)[1].toLowerCase();
        x = x.replace(/-/g, '');
        y = y.replace(/-/g, '');
    return ((x < y) ? -1 : ((x > y) ?  1 : 0));
};

jQuery.fn.dataTableExt.oSort['title-string-desc'] = function(a,b) {
    var x = a.match(/date=(.*?)"/)[1].toLowerCase();
    var y = b.match(/date=(.*?)"/)[1].toLowerCase();
        x = x.replace(/-/g, '');
        y = y.replace(/-/g, '');
    return ((x < y) ?  1 : ((x > y) ? -1 : 0));
};

【讨论】:

    【解决方案2】:

    您可以在该列上使用 fnRender() 来返回您希望该列显示的任何 html。

    bUseRendered: true,
    fnRender: function(oObj) {
       var id = oObj.aData[0];
       var normalDate = oObj.aData[1];
       var amount = oObj.aData[2];
       var urlDate = oObj.aData[3];
       var isUrlDate = oObj.aData[4];
    
       if (isUrlDate) {
          return urlDate;
       }
       else {
          return normalDate;
       }
    }
    

    注意

    bUseRendered: false
    

    这告诉数据表“在排序时使用传回的数据而不是呈现的 html”

    oObj.aData 从该行返回列数据。您可以返回几个额外的 HIDDEN 列,其中包含执行该逻辑所需的数据。然后您的排序仍然有效,并且您还可以访问所需的 url(如果存在)。

    【讨论】:

      【解决方案3】:

      我的猜测是,如果没有链接,这很好,但因为列中有一个链接 (html),它不会像你期望的那样工作。对我来说,这听起来与日期关系不大,而与 HTML 关系更大......

      我发现了这个: jquery datatable plugin doesn't seem to sort columns with links properly

      【讨论】:

      • 对,我在上面提到过,但肯定相信有一种方法可以忽略 html 元素。不幸的是,当尝试在上面链接时,我遇到了同样的问题。感谢您的帮助,并将继续四处寻找。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 1970-01-01
      相关资源
      最近更新 更多