2009-07-07 210 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"}) 

的版本。