Forum
17:37
03/06/2012
Hi,
There appears to be a problem with jqGrid’s date formatting when data is added using addRowData – dates are corrupted when they are formatted for display in the grid.
The problem can easily be seen by making a simple addition to the ok-soft-gmbh example found at TimeFormat.htm. After the line of code containing the call to 'gridResize', add the following two lines:
$grid.jqGrid('addRowData', 13, { id: "13″, invdate: "2007-10-01T16:47″, invdate1: "2007-10-01T16:47″, name: "testXX", note: "note", amount: "200.00″, tax: "10.00″, closed: true, ship_via: "TN", total: "210.00″ } );
$grid.jqGrid('setGridParam',{ page: 1 }).trigger("reloadGrid");
Except for the ID and the name, the data being added here is identical to the 1st row of data in myData. However, when the grid is rendered after the ‘reloadGrid’ call, the date and time displayed in the grid for the data added using addRowData does not match the date and time of the 1st row:
Date and time for 1st row: 01.10.2007 16:47
Date and time for row added with ‘addRowData’: 1.1.2001 0:10
(To make the comparison easier remove all but the 1st row from myData in the original code; however, this is not necessary to reproduce the problem.)
I then modified the code to change all references from jqGrid “4.3.1” to “4.3.3” and found that the problem still exists in 4.3.3, but the date is corrupted to a different value:
Date and time for 1st row: 01.10.2007 16:47
Date and time for row added with ‘addRowData’: 30.03.2007 15:10
The problem appears to be due to the jqGrid code calling $.unformat.date that’s defined on or about line 5327 of the 4.3.3 version of jquery.jqGrid.src.js. unformat.date is not called when the original data is loaded when the grid is created, only when data is added using addRowData.
A workaround fix that I’ve made to the $.unformat.date function in my local copy of jquery.jqGrid.src.js is to add the code contained within the “apw change” comments below:
$.unformat.date = function (cellval, opts) {
var op = $.jgrid.formatter.date || {};
if(!$.fmatter.isUndefined(opts.formatoptions)) {
op = $.extend({},op,opts.formatoptions);
}
if(!$.fmatter.isEmpty(cellval)) {
// start apw change
if (Object.prototype.toString.call(cellval) === "[object Date]" ) {
return cellval;
}
// end apw change
return $.fmatter.util.DateFormat(op.newformat,cellval,op.srcformat,op);
} else {
return $.fn.fmatter.defaultFormat(cellval, opts);
}
};
This change skips the unformat operation if the date to be formatted already is a Date object. In fact, this might be a useful change to include even when the underlying problem of parsing the in-bound date value is fixed, because there’s no need to perform this “unformat” operation if the object is already a date.
For this change to work with the TimeFormat.htm example cited above, the two date strings in the data added by addRowData need to be changed to Date objects.
09:26
Moderators
30/10/2007
Hello,
Thanks. The fix is not the same, but there was a problem and fix it. See in GitHub
Best Regards
Tony
For professional UI suites for Java Script and PHP visit us at our commercial products site - guriddo.net - by the very same guys that created jqGrid.
Most Users Ever Online: 715
Currently Online:
44 Guest(s)
Currently Browsing this Page:
1 Guest(s)
Top Posters:
OlegK: 1255
markw65: 179
kobruleht: 144
phicarre: 132
YamilBracho: 124
Renso: 118
Member Stats:
Guest Posters: 447
Members: 11373
Moderators: 2
Admins: 1
Forum Stats:
Groups: 1
Forums: 8
Topics: 10592
Posts: 31289
Newest Members:
, razia, Prankie, psky, praveen neelam, greg.valainis@pa-tech.comModerators: tony: 7721, Rumen[Trirand]: 81
Administrators: admin: 66