是否有任何解決方法可以在jqGrid中將自定義「格式化程序」添加到userData
?我發現this的問題,它幫助我很多。下面是我用來填充jqGrid的代碼。請注意,我在jsonReader
中填充了一個自定義的userData
對象,並將其設置爲loadComplete
中的網格,我需要爲總列添加單獨的「格式化程序」。請讓我知道是否有辦法。提前致謝。jqGrid用戶數據的自定義格式化程序
var userDataTotals;
jq("#testGrid").jqGrid({
url:'local',
datatype: 'local',
mtype: 'GET',
colNames:[
'rowId','unitId',
'<fmt:message key="report.col1"/>',
'<fmt:message key="report.col2"/>',
],
colModel :[
{name:'rowId', index:'rowId',hidden: true,sortable: true,key:true},
{name:'unitId', index:'unitId',hidden: true,sortable: true,key:true},
{name:'outboundReadyDate', index:'outboundReadyDate', width:80,align:"center",sorttype:'integer',formatter:dateOnlyFmatter,datefmt:'Y M d'},
{name:'outboundDate', index:'outboundDate', width:80,align:"center",sorttype:'integer',formatter:dateOnlyFmatter,datefmt:'Y M d'},
],
// this will enable the footer row to display totals
footerrow : true,
//userDataOnFooter : true,
altRows : true,
//to hide pager buttons
pgbuttons:false,
recordtext:'',
pgtext:'',
gridview: true,
height:270,
loadonce: true,
sortname: 'rowId',
sortorder: 'asc',
viewrecords: true,
rowNum:30000,
loadComplete: function() {
// This will increase the column header height (to show two rows in the header)
jq(".ui-jqgrid-sortable").css('white-space', 'normal');
jq(".ui-jqgrid-sortable").css('height', 'auto');
//Set the total values after load complete,otherwise
// custom formatter will format the total value as well.
jq("#mainReportGrid").jqGrid("footerData","set",userDataTotals,false);
//check the data type to avoid this code to execute when the pageload
var checkDatatype = myGrid.jqGrid("getGridParam","datatype");
if(checkDatatype =='json' && myGrid.getGridParam('records') == 0){
// when no records are displaying alert it to the user
alert(noRecordsMsg);
}
},
jsonReader : {
root: "dtos",
records: "records",
repeatitems: false,
cell: "cell",
id: "rowId",
userdata :function(obj) {
userDataTotals = {"outboundReadyDate":obj.totalOutBounded,
"outboundDate":obj.totalOutBoundReady};
}
},
//This will format the date of the grid (without displaying time)
function dateOnlyFmatter (cellvalue, options, rowObject){
var opts = options.colModel.formatoptions;
if(cellvalue==null || cellvalue=='undefined'){
return '-';
}else{
if(opts != undefined && rowObject.projectTypeName =='IOD'){
return 'N/A';
}
var now = new Date(cellvalue);
return now.format('M j, Y');
}
}
我使用自定義dateFormat.js
來格式化日期。
和JSON響應是 -
{
"dtos": [
{
"unitId": 1068,
"outboundDate": null,
"outboundReadyDate": 1317619303000,
"rowId": 13,
},
{
"unitId": 1105,
"outboundDate": 1317616970000,
"outboundReadyDate": 1317617213000,
"rowId": 14,
}
],
"totalOutBounded": 0,
"totalOutBoundReady": 4,
"rowTotal": 15,
"returnCode": 0,
"msg": ""
}
我用sortType
作爲integer
因爲從服務器我正在直接傳遞的Java「Date
對象到電網。爲了整理它,我需要設置sortType
到integer
基本問題是我在IE8我看不到'userData'總值。但在其他瀏覽器中,我可以看到它。我需要將userData
的總值設置爲「超鏈接」。
沒有userData
格式我可以看到在IE8中的總數。所以我在想,不使用列'formatter'
添加一個自定義格式化程序的總值(userData
)。
你可以包含'dateOnlyFmatter'的代碼嗎? – Oleg
其他字符串像'datefmt:'Y M d''和'sorttype:'integer''看起來很奇怪並且懷疑。你能包括你發佈的JSON數據嗎?一個明顯的錯誤是將'key:true'用作多列作爲一個列。 – Oleg
@oleg - 感謝您的回覆。請在問題中找到'dateOnlyFmatter'代碼。 – Sam