Date jqgrid中的多个格式化程序日期选项
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(
格式化程序:'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:没有演示,我帮不了你,其中包括一些测试数据。