2014-09-24 4 views
0

Отбивая мою голову к стене этим. Как следует из названия вопроса, у меня есть JQuery Datatable в моем MVC Razor View. Один из столбцов отображает дату Uk (dd/mm/yyyy), и я хотел бы отсортировать этот столбец на основе его британской даты.JQuery DataTable UK Дата Сортировка Не работает

У меня есть следующий в моем Razor View

<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> 

Но все же моя дата сортировка не работает. Я рассмотрел другие подобные вопросы в Stack Overflow, но я все еще не могу заставить это работать.

Может ли кто-нибудь указать мне в правильном направлении.

Благодарим за помощь.

ответ

4

Попробуйте это: заменить sType значение от uk_date до date-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

+0

Я попробовал другой ответ, и сортировка вернулась, но столбец даты все еще не сортируется правильно. Любые другие предложения? – tgriffiths

+0

см. Мой обновленный ответ –