Добавить URL в набор данных jQuery Datatables? - PullRequest
0 голосов
/ 19 июля 2011

У меня есть jatery datatables, который создается динамически, то есть каждая строка создается с использованием вызова базы данных php mysql. Создание таблицы само по себе не проблема, но иногда я хочу добавить гиперссылки на данные, отображаемые в наборе.

Например:

ID   |    Date       |   Amount
----------------------------
1    | April 1, 2011 |  3.95
2    | April 5, 2011 |  4.55
3    | May 9, 2011   |  19.32 

Суть в том, что даты выше будут гиперссылками, а формат даты в URL будет в формате ГГГГ-мм-дд.

Когда я делаю это, datatables хочет обрабатывать весь URL-адрес как элемент данных и, таким образом, облажает любую сортировку, которую я могу сделать в таблице после факта.

Кто-нибудь имел эту проблему раньше? Кажется, я ничего не могу найти в Интернете.

Ответы [ 3 ]

1 голос
/ 20 июля 2011

Для сортировки нестандартных столбцов вы можете определить определенные функции: здесь вы можете найти некоторые из них: http://datatables.net/plug-ins/sorting.

в вашем случае вы определяете свою собственную функцию сортировки следующим образом:

jQuery.fn.dataTableExt.oSort['my-date-asc']  = function(a,b) {
    var x = a.match(/date=(.*?)"/)[1].toLowerCase();
    var y = b.match(/title="(.*?)"/)[1].toLowerCase();
        x = x.replace(/-/g, '');
        y = y.replace(/-/g, '');
    return ((x < y) ? -1 : ((x > y) ?  1 : 0));
};

jQuery.fn.dataTableExt.oSort['title-string-desc'] = function(a,b) {
    var x = a.match(/date=(.*?)"/)[1].toLowerCase();
    var y = b.match(/date=(.*?)"/)[1].toLowerCase();
        x = x.replace(/-/g, '');
        y = y.replace(/-/g, '');
    return ((x < y) ?  1 : ((x > y) ? -1 : 0));
};
1 голос
/ 23 июля 2011

Вы можете использовать fnRender () для этого столбца, чтобы вернуть любой HTML-файл, который вы хотите отобразить в этом столбце.

bUseRendered: true,
fnRender: function(oObj) {
   var id = oObj.aData[0];
   var normalDate = oObj.aData[1];
   var amount = oObj.aData[2];
   var urlDate = oObj.aData[3];
   var isUrlDate = oObj.aData[4];

   if (isUrlDate) {
      return urlDate;
   }
   else {
      return normalDate;
   }
}

Обратите внимание на

bUseRendered: false

Это говорит о таблицах данных "для этого столбца, когда сортировка использует данные, переданные обратно, а не предоставленный HTML"

oObj.aData возвращаетданные столбца из этой строки.Вы можете вернуть пару дополнительных столбцов HIDDEN, которые содержат данные, необходимые для выполнения этой логики.Тогда ваша сортировка все еще работает, и у вас также есть доступ к нужному вам URL, если он существует.

0 голосов
/ 19 июля 2011

Полагаю, что если ссылки нет, это нормально, но поскольку в столбце есть ссылка (html), она не будет работать так, как вы ожидаете.Мне кажется, это связано не столько с датой, сколько с HTML ...

Я нашел это: Плагин с данными jquery, похоже, неправильно сортирует столбцы со ссылками

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...