2009-07-07 125 views
20

我使用tablesorter插件在MVC .NET应用程序中排序我的表。我的大部分专栏都是字符串,我对他们没有任何问题。无论是数字的。事情是我的日期时间列也得到排序,就好像他们是字符串。他们得到如下排序:2009年1月4日,2009年2月2日,2009年3月8日等。我从该视图中的模型中获取数据。与jquery tablesorter排序日期的问题

我的电话是默认的:

$("#table").tablesorter(); 

我试图指定,没有运气日期格式:

$("#table").tablesorter({ 
      dateFormat: 'dd/mm/yyyy'}); 

奇怪的事情发生时,我手动键入一个静态表随机日期。它被分类!但是我的数据来自数据库调用并放入模型中,然后通过它读取数据并写入tr。

在此先感谢。

编辑:它可能是与我创建TR的方式相关的东西?

<% foreach (var item in Model) { %> 
<tr> 
<td> 
<%= Html.Encode(item.date) %> 
</td> 
<td>...</td> 
<td>...</td> 
<td>...</td> 
</tr> 
<% } %> 
+0

是否可以在yyyy-mm-dd中设置日期格式? – ScottE 2009-07-07 12:36:08

+0

nope,它必须在我的国家的地区(西班牙)。 :( – 2009-07-07 13:20:59

回答

26

尝试将Tablesorter解析器添加到日期列中。 Tablesorter带有shortDate,usLongDate和isoDate的解析器。

$("#table").tablesorter({ 
    headers: { colNum: { sorter: 'shortDate'} } 
}); 

其中colNum是带日期的列。我可以在tablesorter网站上找到的唯一例子是here。这也适用于如果tablesorter排序数字错误。还有其他的解析器,以及百分比,IP地址等等。看看源代码的末尾,他们会在那里列出。

编辑: 在看源代码,dateformat选项出现 “US”, “英国” 仅被看, “DD/MM/YY” 或 “DD-MM-YY”。当你尝试“英国”会发生什么?

+0

我试图shorDate解析器藏汉但忘了提不走运要么:(我来试试用其他日期解析器,让你知道感谢 – 2009-07-07 13:27:12

+12

这工作 我把电话如下:! $( “#表”)。tablesorter({dateFormat:'uk'}); 我一直在想,为什么在默认调用时,按照预期的方式编写纯HTML格式的表,而不是在MVC生成它时(并且必须找到此解决方法)。 谢谢! – 2009-07-07 16:07:24

16

我得到了同样的问题,我添加了一个自定义的解析器称为日期时间:

$.tablesorter.addParser({ 
    id: "datetime", 
    is: function(s) { 
     return false; 
    }, 
    format: function(s,table) { 
     s = s.replace(/\-/g,"/"); 
     s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1"); 
     return $.tablesorter.formatFloat(new Date(s).getTime()); 
    }, 
    type: "numeric" 
}); 

然后你只需要以该格式应用到你想要的列,如加布摹暴露(例如分配此分拣机的第一列,你应该做到以下几点:

$("#mytable").tablesorter( 
    { dateFormat: 'dd/mm/yyyy', 
     headers: 
      { 
       0:{sorter:'datetime'} 
      } 
    }); 
2

存在着jQuery的tablesorter插件的更新

按照你的应用程的语言环境。您可以按照此更新对日期进行排序。

您可以通过以下链接查看tablesorter的更新。

http://tablesorter.openwerk.de/

7

您也可以以数字格式(年月日)的日期前添加一个隐藏的范围标记。该文本将首先出现并用于排序,但它将被隐藏起来,只显示您想要的格式。

<td><span style="display:none">20130923</span>23 September 2013</td>  
0

更简单的方法使用:

dateFormat:'mm/dd/yyyy hh:mm:ss' 
0

说实话最简单的办法对我来说,作为compsmart说,在实际日期的前一些隐藏的文本。

  • DATEFORMAT:“英国”没有工作对我来说,也许是因为我的日期格式是不同的再次
  • http://tablesorter.openwerk.de/涉及到修改CSS,首先,我不明白为什么和第二的力大于大简单地在日期前添加隐藏文字。

我喜欢compsmart的KISS解决方案!

0

http://mottie.github.io/tablesorter/docs/

设置日期格式。这里有可用的选项。 (修改v2.0.23)。

  • “MMDDYYYY”(默认)
  • “DDMMYYYY”
  • “年月日”

在以前的版本中,此选项设置为 “我们”, “英国” 或“DD/MM/YY”。此选项已被修改以更好地适应所需的日期格式。它只能使用四位数的年份!

应将分拣机设置为“shortDate”,并且可以在“dateFormat”选项中设置日期格式,或为“标题”选项中的特定列设置日期格式。看演示页面看它工作。

$(function(){ 
    $("table").tablesorter({ 

    dateFormat : "mmddyyyy", // default date format 

    // or to change the format for specific columns, 
    // add the dateFormat to the headers option: 
    headers: { 
     0: { sorter: "shortDate" }, // "shortDate" with the default dateFormat above 
     1: { sorter: "shortDate", dateFormat: "ddmmyyyy" }, // day first format 
     2: { sorter: "shortDate", dateFormat: "yyyymmdd" } // year first format 
    } 

    }); 
}); 

各个列可以通过添加下述的(它们都做同样的事情)进行修改,在优先级(改性V2.3.1)的顺序设置:

  • jQuery的数据的数据DATEFORMAT =” MMDDYYYY”。
  • metadata class =“{dateFormat:'mmddyyyy'}”。这需要元数据插件。
  • 标题选项标题:{0:{dateFormat:'mmddyyyy'}}。
  • 头文件类名称class =“dateFormat-mmddyyyy”。 整体dateFormat选项。

在我来说,我已经使用

$("#myTable").tablesorter({dateFormat: "uk"}) 

的版本。