Date jqgrid中的多个格式化程序日期选项

Date jqgrid中的多个格式化程序日期选项,date,jqgrid,formatter,Date,Jqgrid,Formatter,jqgrid中有一个日期字段排序不正确。原因是我的初始格式化程序:'date'被我对formatter:function(…)的第二次引用覆盖。 如何保留这两项功能 这是我的密码: {name:'FUSInvitedDateX',hidden:true,index:'FUSInvitedDateX',width:'250', search: true,searchoptions:{sopt:['eq','ne','lt','le','gt','ge'], dataInit: function(

jqgrid中有一个日期字段排序不正确。原因是我的初始
格式化程序:'date'
被我对
formatter:function(…)
的第二次引用覆盖。 如何保留这两项功能

这是我的密码:

{name:'FUSInvitedDateX',hidden:true,index:'FUSInvitedDateX',width:'250',
search: true,searchoptions:{sopt:['eq','ne','lt','le','gt','ge'], dataInit: 
function(elem) {$(elem).datepicker();}},sorttype: 'date', 
formatter:'date',formatoptions: {srcformat: 'm/d/Y', newformat: 'm/d/Y' },
formatter: function(cellvalue, options, rowObject) { return 
highlight(cellvalue, options, rowObject, ['FUSScheduledDateX','FUSCompletedDateX','InterviewStatus_DerivedX'],'interview-invite-late');}}
然后在突出显示功能中,我有如下内容:

function highlight(cellvalue,options,rowObject,compare,color) {
                if (cellvalue.length==0) { return cellvalue; }
                [ evaluating code ]
                 return '<span>' + cellvalue + '</span>';
函数高亮显示(单元格值、选项、行对象、比较、颜色){
如果(cellvalue.length==0){返回cellvalue;}
[评估代码]
返回“”+单元格值+“”;

任何建议都将不胜感激

抱歉,但不能在一个对象中定义两个同名的属性。另一方面,您在列定义中包含了两次格式化程序属性。这是语法错误

即使您要删除格式化程序:'date'并仅使用自定义格式化程序(
formatter
回调函数),那么
sorttype:'date'
也将无法工作,因为jqGrid将无法正确解析日期


如果您确实需要使用自定义格式化程序(回调函数),那么您也应该将
sorttype
定义为回调函数。您可以解析
sorttype
函数中的输入字符串,并将其作为ISO日期返回(如2017-06-15).

感谢您的快速响应。您有没有关于我如何将上述解决方案修改为a)允许筛选日期字段,仍然b)允许自定义格式设置程序的示例代码?非常感谢。@richnwilson:
sorttype
可以定义为回调函数,它应该返回值,而不是使用原始值e在排序期间。如果使用
src格式:“m/d/Y”
如2017年6月16日,则可以将其转换为
Y-m-d”
如2017年6月16日。因此
sorttype
的代码可以简化为以下形式:
sorttype:function(cellValue){var parts=cellValue.split('/');返回部分[2]+'-+parts[0]+-'parts[1];}
。如果源数据可能是2017年6月16日而不是2017年6月16日,并且数据可能是空的或未定义的,那么真实代码可能会稍微复杂一些。谢谢。我相信我已经用以下命令解决了排序顺序:
sorttype:function(cellValue){if(cellValue.length==0 | | typeof cellValue==“未定义”){return false;}else{var$parts=cellValue.split('/');var$yyyy=$parts[2];var$m=$parts[0]。长度<2?'0'+$parts[0]:$parts[0];var$d=$parts[1]。长度<2?'0'+$parts[1]:$parts[1];返回$yyyyyy+“-”+$m+“+$d;}
但是日期过滤器似乎不起作用。我使用日期选择器尝试了=,=的布尔条件,但它只显示空白。我相信我现在已经解决了这个问题。我将
dataInit:function(elem){$(elem)。datepicker();}}
更改为
dataInit:function(elem){$(elem)。datepicker({dateFormat:'m/d/yy'});}
。这听起来对吗?@richnwilson:没有演示,我帮不了你,其中包括一些测试数据。