Sorting IE8中的数据表和按日期排序

Sorting IE8中的数据表和按日期排序,sorting,datatables,Sorting,Datatables,排序日期字段(具有{“sType”:“date”}时遇到一些问题。null排序类型(仅将数据排序为普通字符串)在IE8中工作正常 适用于IE 9和10,以及最新版本的Chrome、Safari和Firefox。这个应用程序不用于移动客户端,所以我没有在那里测试 IE8有什么特别的地方需要我去研究吗?IE8的JavaScript控制台上没有错误,所以我有点不知道该去哪里寻找。检查了文档并四处搜索,但还没有找到任何IE8特有的东西 更新: 下面是我用来初始化数据表的JavaScript //sprv

排序日期字段(具有
{“sType”:“date”}
时遇到一些问题。
null
排序类型(仅将数据排序为普通字符串)在IE8中工作正常

适用于IE 9和10,以及最新版本的Chrome、Safari和Firefox。这个应用程序不用于移动客户端,所以我没有在那里测试

IE8有什么特别的地方需要我去研究吗?IE8的JavaScript控制台上没有错误,所以我有点不知道该去哪里寻找。检查了文档并四处搜索,但还没有找到任何IE8特有的东西

更新:

下面是我用来初始化数据表的JavaScript

//sprv results table
$("#sprv_report_table").livequery(function(){$(this).dataTable({
  "aoColumns": [{"sType":"date"},null,null,null,null,{"sType":"date"}],
  "iDisplayLength": 10, 
  "sPaginationType": "full_numbers"
});});1

由于datatables代码确实应用于该表,并且我可以对其他列进行排序,因此我没有任何理由相信此事件没有被触发-很明显,它是由浏览器触发的。

尝试类似以下操作:

$(this).dataTable({
  "aoColumns": [{
    mData: function(data, type) {
       var realDate = Date.parse(data); //data will be a string
       switch(type) {
         case 'display':
            return realDate.toString('MM/dd/yyyy'); //note that this line needs to be implemented by you (however you format dates)
         default:
            return realDate;
       }
    }
   },null,null,null,null,{"sType":"date"}],
  "iDisplayLength": 10, 
  "sPaginationType": "full_numbers"
});
请参见此处有关
mData
用法的参考:

整数-被视为数据源的数组索引。这是DataTables使用的默认值(每列递增)

字符串-从数据源读取对象属性。请注意,您可以使用Javascript点符号从数据源读取深层属性/数组

null-sDefaultContent选项将用于单元格(默认为null,因此您需要指定所需的默认内容-通常为空字符串)。这对于生成的列(如编辑/删除操作列)非常有用

函数-只要DataTables需要设置或获取列中某个单元格的数据,就会执行给定的函数。该函数有三个参数: {array | object}行的数据源 {string}请求的类型调用数据-当设置数据或“筛选”、“显示”、“类型”、“排序”或在收集数据时未定义时,这将被“设置”。请注意,当为类型给定未定义时,DataTables期望返回对象的原始数据

{*}当第二个参数为“set”时要设置的数据

如果“set”是调用类型,则不需要函数的返回值,否则返回值将用于请求的数据


当您尝试对日期列进行排序时,IE8中的行为是什么?您使用的是美式的MM/dd/yyyy日期吗?它突出显示了该列,但表项的顺序没有改变。我刚刚意识到我有几个版本(1.7.4),所以我将首先研究这个角度。结果发现,即使是最新版本的datatables也有同样的问题。我已经用javascript更新了我的问题,我正在使用javascript初始化我的datatable。该列中的HTML是什么样子的?我想我仍然怀疑您使用的任何日期格式都是“非标准”的。我倾向于使用自定义的mData进行排序。所以,基本上,使用手写函数对日期进行自定义排序。我会尝试一下,因为我遇到了其他的怪癖,这可能是最直接的方法,希望不会对不同的浏览器产生不同的副作用。好吧,这就是我试图帮助你的u避免.DataTables/will/对实际日期对象进行排序(例如,
realDate instanceof date
)。DataTables在排序时运行mData函数,因此它知道将数据作为日期进行比较,而不是作为“看起来像日期的字符串”进行比较啊,我明白了,我也明白了排序日期和看起来像日期的字符串之间的区别。请原谅我一直以来的天真,但我似乎可以用
mData:function(data,type){return Date.parse(data);}替换上面的函数
-我的实验表明“显示”框是不必要的。我在这种方法中遗漏了什么?@normalocity:其实没什么。当它呈现返回的日期时,它可能是一些你不喜欢的丑陋格式(例如2013年3月15日星期五15:33:09 GMT-0500(中央夏令时)),这就是我(通常)的原因将我的
display
大小写拆分为一个单独的大小写(冗余…抱歉)。但这完全取决于您。您发布的内容肯定会起作用。澄清一下:DataTables只对返回值执行
.toString()
(如果我没有记错的话),这就是返回值很难看的原因,也是我建议使用某种格式的原因。如果您需要这方面的建议,我每天都使用它,而且它非常健壮,即使它已经有一段时间没有更新。使用.NET样式的格式规则