2014-09-05 69 views
2

我想在网格上显示日期为N/A,因为它在数据库中为NULL,否则为正常日期格式。 目前我有这样的代码:在JQGrid中为日期字段设置自定义格式化程序

name: 'Handshake_Actual_Date', index: 'Handshake_Actual_Date', search: false, 
editable:true, align: "left", width: 75, formatter: "date", formatoptions: 
{newformat:"m/d/Y" }, 
editoptions: { 
size: 20, 
dataInit: function (el) { 
$(el).datepicker({ dateFormat: 'mm/d/yy' }); 
}, 
defaultValue: function() { 
var currentTime = new Date(); 
var month = parseInt(currentTime.getMonth() + 1); 
month = month <= 9 ? "0" + month : month; 
var day = currentTime.getDate(); 
day = day <= 9 ? "0" + day : day; 
var year = currentTime.getFullYear(); 
return day + "/" + month + "/" + year; 
} 
} 

它工作得很好,但我想自定义格式如下图所示:

function myFormatter (cellvalue, options, rowObject) { 
if(cellvalue==null) 
{ 
return "N/A"; 
} 
else 
{ 
return $.fn.fmatter.date(cellvalue, options, rowObject); 
} 
} 

,但它不工作..! 你可以在这里看到的代码示例:http://jsfiddle.net/35Larwva/

回答

2

尝试更换

$.fn.fmatter.date(cellvalue, options, rowObject) 

$.fn.fmatter.call(this, "date", cellvalue, options, rowObject); 

此外,我建议你用更正确的JavaScript代码:cellvalue==NULL应及时更换, cellvalue === null,你应该在陈述结束时使用;(例如在return "N/A"之后),最好总是使用{}代替ifelse声明。

修订:我定你jqfiddle演示,以便它现在的工作:http://jsfiddle.net/OlegKi/35Larwva/2/

+0

thnks!我尝试将其改为您所说的内容,但我的网格无法加载,它只是在一个框中显示加载。事实上,即使只写 返回fn.fmatter.call(this,“date”,cellvalue,options,rowObject);在没有其他的情况下,在自定义格式化程序中,不起作用 \t } – user3814961 2014-09-05 13:20:54

+0

@ user3814961:可能有很多其他原因。加载框主要意味着您使用的JavaScript代码存在错误。例如'NULL'表示未定义的全局变量,名称为NULL,'null'表示您知道的空。您应该在调试器中启动代码,以准确查看哪个错误以及您拥有哪行代码(例如,按F12启动Developer Tools,然后启动JavaScript调试器)。例如,你可以在jqFiddle中发布你的代码(例如获取[demo](例如http://jsfiddle.net/OlegKi/35k71pmw/2/并修改它以包含你的代码))并发布链接 – Oleg 2014-09-05 13:29:10

+0

@Oleg你能请看看这个问题。谢谢[链接] http://stackoverflow.com/questions/25694281/jqgrid-how-to-add-a-edittype-checkmark-that-posts-date-to-column – NewHistoricForm 2014-09-05 21:37:47

相关问题