我有一个简单的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 } } ...