如何让jQuery DataTables对隐藏值排序,但是搜索显示的值?

前端之家收集整理的这篇文章主要介绍了如何让jQuery DataTables对隐藏值排序,但是搜索显示的值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的DataTables网格,其中包含日期列。我为JSON数据集中的日期提供了两个值,一个用于显示和一个专门设计,以便DataTables可以进行排序。我的Web应用程序允许用户选择一堆不同的日期格式,因此它需要灵活。

这是我的JSON数据,DataTables通过sAjaxSource从Web服务器获取

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

很容易告诉DataTables根据Date.SortValue属性进行排序,并使用fnRender()使用户可以看到Display属性。所以这让我中途到达我的目标。

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返回的值。

任何人都可以帮我弄清楚如何排序和过滤日期列?谢谢。

解决方法

这是一个老帖子,但希望这将有助于别人来到这里。

在最新版本的DataTables中,不推荐使用bUseRendered和fnRender。

mRender是做这种事情的新方式,有一个略有不同的做法。

你可以解决你的问题:

...
{ mDataProp: "Date.Sort"
  bSortable: true,// this will return the Display value for everything
  // except for when it's used for sorting,// which then it will use the Sort value
  mRender: function (data,type,full) {
    if(type == 'sort') return data.Sort;
    return data.Display
  }
}
...

猜你在找的jQuery相关文章