Php 是否将URL添加到jQuery数据表数据集?
我有一个动态构建的jquery datatables,这意味着每一行都是使用php mysql数据库调用构建的。创建表本身没有问题,但有时我想向集合中显示的数据添加超链接 例如:Php 是否将URL添加到jQuery数据表数据集?,php,jquery,mysql,ajax,datatables,Php,Jquery,Mysql,Ajax,Datatables,我有一个动态构建的jquery datatables,这意味着每一行都是使用php mysql数据库调用构建的。创建表本身没有问题,但有时我想向集合中显示的数据添加超链接 例如: ID | Date | Amount ---------------------------- 1 | April 1, 2011 | 3.95 2 | April 5, 2011 | 4.55 3 | May 9, 2011 | 19.32 关键是,上面的日期
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视为一个数据元素,因此会在事后对表进行任何排序
以前有人有过这个问题吗?我似乎在网上找不到任何东西。我的猜测是,如果没有链接,这种排序很好,但因为专栏中有一个链接(html),所以它的工作方式与您预期的不一样。对我来说,这听起来似乎与日期关系不大,而与HTML关系更大 我发现:
要对非标准列进行排序,您可以定义特定的函数:在这里您可以找到一些函数: 在您的情况下,您可以这样定义自己的排序函数:
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));
};
jQuery.fn.dataTableExt.oSort['my-date-asc']=函数(a,b){
var x=a.match(/date=(.*)/)[1].toLowerCase();
var y=b.match(/title=“(.*)/)[1].toLowerCase();
x=x。替换(/-/g,);
y=y。替换(/-/g',);
回报率((xy)?1:0);
};
jQuery.fn.dataTableExt.oSort['title-string-desc']=函数(a,b){
var x=a.match(/date=(.*)/)[1].toLowerCase();
var y=b.match(/date=(.*)/)[1].toLowerCase();
x=x。替换(/-/g,);
y=y。替换(/-/g',);
回报率((xy)?-1:0);
};
您可以在该列上使用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
这告诉datatables“在排序时,此列使用传回的数据,而不是呈现的html”
oObj.aData从该行返回列数据。您可以返回两个额外的隐藏列,其中包含执行该逻辑所需的数据。然后,您的排序仍然有效,并且您还可以访问所需的url(如果存在)。因此,日期列看起来像:?请帮助我理解,因为这将按顺序排序g YYYY-mm-dd日期。你能澄清你在找什么吗?这对你有帮助吗?@kasdega-它不按YYYY-mm-dd排序。我们的代码中有一个非常类似的情况。如果我有更多的东西,我会看看是否能找到它。对,我在上面提到过,但肯定相信有一种方法可以忽略html元素。尝试时很遗憾,我收到了同样的问题。我感谢你的帮助,并将继续四处寻找。