Как я могу заставить jQuery DataTables сортировать по скрытому значению, но искать по отображаемому значению?

У меня есть простая сетка DataTables, содержащая столбцы с датами. Я предоставил два значения для даты в моем наборе данных JSON: одно для отображения и одно, специально разработанное для сортировки DataTables. Мое веб-приложение позволяет пользователям выбирать несколько разных форматов даты, поэтому оно должно быть гибким.

Это мои данные JSON, которые DataTables получает с веб-сервера через sAjaxSource .

{
  Reports : [
    { Date: { Sort = "20101131133000", Display : "11/31/2010 1:30 PM" } }, 
    { Date: { Sort = "20100912120000", Display : "1200 EST 2010-09-12" } }, 
  ]
}

DataTables легко указать для сортировки на основе свойства Date.SortValue и сделать свойство Display видимым для пользователя с помощью fnRender () . Так что это приближает меня к моей цели.

var dataTableConfig = {
  sAjaxSource: "/getreports",
  sAjaxDataProp: "Reports",
  aoColumns: [
    { mDataProp: "User" },
    { mDataProp: "Date.Sort", 
      bSortable: true, 
      sName: "Date", 
      bUseRendered: false, 
      fnRender: function (oObj) {
        return oObj.aData[oObj.oSettings.aoColumns[oObj.iDataColumn].sName].Display;
      }
    }
  ]
};

Вот моя проблема. Я хочу разрешить пользователю вводить фильтр (используя встроенный фильтр, предоставляемый DataTables) на основе отображаемого значения, но они не могут.

Например. Если пользователь введет «EST», он получит нулевые результаты, поскольку таблицы данных фильтруют на основе значения, указанного в mDataProp , а не на основе значения, возвращенного из fnRender .

Может ли кто-нибудь помочь мне понять, как сортировать И фильтровать столбец даты? Спасибо.

34
задан jessegavin 5 October 2011 в 22:05
поделиться