2014-09-24 119 views
0

用這個撞擊我的頭靠在牆上。正如問題標題所示,我的MVC Razor View中有一個JQuery Datatable。其中一列顯示英國日期(dd/mm/yyyy),我想根據它的英國日期對此列進行排序。JQuery DataTable UK日期排序不工作

我有我的Razor視圖

<script type="text/javascript" charset="utf-8"> 
     $(document).ready(function() { 

      jQuery.extend(jQuery.fn.dataTableExt.oSort, { 
       "date-uk-pre": function (a) { 
        var ukDatea = a.split('/'); 
        return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1; 
       }, 

       "date-uk-asc": function (a, b) { 
        return ((a < b) ? -1 : ((a > b) ? 1 : 0)); 
       }, 

       "date-uk-desc": function (a, b) { 
        return ((a < b) ? 1 : ((a > b) ? -1 : 0)); 
       } 
      }); 


      $('#example').dataTable({ 
       stateSave: true, 
       "aoColumnDefs" : [ 
         {"aTargets" : [1] , "sType" : "uk_date"} 
        ] 
      }); 


     }); 
</script> 

<table cellpadding="0" cellspacing="0" border="1" class="cdates" id="example"> 
    <thead> 
    <tr> 
     <th>Name</th> 
     <th>Date</th>  
     <th>Status</th> 
     <th>Applicants</th> 
    </tr> 
    </thead> 
    <tbody> 
     @foreach (var cd in Model) 
     { 
      <tr> 
      <td><strong>@cd.CourseName</strong></td> 
      <td>@cd.CourseDate</td> 
      <td>@cd.CourseStatus</td> 
      <td>@Html.ActionLink("View Applicants", "CDApps", "Portfolio", new { @id = @cd.CourseDateID, @[email protected] }, null)</td> 
      </tr>    
     } 
    </tbody> 
</table> 

但是還是我的日期排序不工作中的以下。我已經看過堆棧溢出的其他類似問題,但我仍然無法得到這個工作。

任何人都可以請指點我正確的方向。

感謝您的幫助。

回答

4

試試這個:更換從uk_datesTypedate-uk在你的排序功能,您使用的"date-uk-pre""date-uk-asc""date-uk-desc"

$('#example').dataTable({ 
     stateSave: true, 
     "aoColumnDefs" : [ 
      {"aTargets" : [1], "sType" : "date-uk"} 
     ] 
    }); 

而且你的日期欄有時間包括日期值,這是造成問題排序。

有以下兩種溶液

1)使排序功能的變化,以排除時間因子

"date-uk-pre": function (a) { 
      var ukDatea = a.split('/'); 
      var yearWithoutTimeValue = ukDatea[2].split(" ")[0]; 
      return (yearWithoutTimeValue + ukDatea[1] + ukDatea[0]) * 1; 
    }, 

Demo

2)從表列值除去時間等

<tr> 
    <td><strong>Electroconvulsive Therapy (ECT) (3 days)</strong></td> 
    <td>01/05/2014</td> 
    <td></td> 
    <td><a href="/Portfolio/CDApps/15454?CourseID=51">View Applicants</a></td> 
</tr> 

DEMO

+0

謝謝,但沒有奏效。它實際上從您的答案中刪除了所有列的排序。 – tgriffiths 2014-09-24 09:58:53

+0

我試過了你的其他答案,排序又回來了,但日期列仍然沒有正確排序。還有其他建議嗎? – tgriffiths 2014-09-24 10:02:11

+0

看到我更新的答案 – 2014-09-24 10:06:52