Jqgrid自定义格式器和编辑模式
Jqgrid custom formatter and edit mode
似乎使用自定义格式化程序会使单元格停留在编辑模式,并且以前编辑过的行永远不会恢复。
JS,这里定义网格
$(priceListGrid).jqGrid({
datatype: 'local',
url: common.getServerPath() + 'controller/action',
mtype: 'POST',
jsonReader: common.jqgrid.jsonReader('Id'),
colModel: [
{ name: 'MethodCode', label: 'MethodCode', index: 'MethodCode', hidden: true },
{ name: 'PriceCode', label: 'Price Code', index: 'PriceCode', width: '20px' },
{ name: 'Description', label: 'Description', index: 'Description', width: '34px' },
{ name: 'RoundTo', label: 'RoundTo', index: 'RoundTo', width: '10px' },
{
name: 'MinPrice',
label: 'Min Pr',
index: 'MinPrice',
width: '15px',
align: 'right',
formatter: customCurFormatter,
editable: true,
editrules: {
number: true,
minValue: 0,
custom: true,
custom_func: validateMinPrice
}
}
],
caption: 'Price Entity List',
hidegrid: false,
ignoreCase: true,
viewrecords: true,
recordtext: '{2} Entity(ies).',
autowidth: true,
shrinkToFit: true,
scroll: 1,
sortname: 'PriceCode',
sortorder: 'asc',
rowNum: 500,
altRows: true,
altclass: 'gridAltRowClass',
pager: '#pagerEntityPriceListDetails',
onCellSelect: priceItemSelect,
onSelectRow: onSelectPrice,
afterSubmitCell: function (rowid) {
this.setRowData(rowid, info.Data, null);
},
loadComplete: priceListEntityLoadComplete,
loadError: function (xhr, status, error) {
common.ajax.alsJsonError(xhr, status, error);
//stopDataLoading();
}//,
//loadBeforeSend: function () { isDataLoadingCount++; },
//beforeSelectRow: function () { return !getIsDataLoading(); }
})
这是格式化程序
var customCurFormatter = function (cellvalue, options, rowObject) {
return cellvalue.toFixed(rowObject.RoundTo);
}
使用它时,与 formatter:currency
不同,单元格在转到下一行时会停留在编辑模式。
如有任何想法,我们将不胜感激。
自定义格式化程序的当前代码是错误的,因为 toFixed
方法可以应用于 Number
而不是字符串。 cellvalue
至少在编辑期间有 String
类型。格式化程序代码的最小更改应该是
var customCurFormatter = function (cellvalue, options, rowObject) {
return Number(cellvalue).toFixed(rowObject.RoundTo);
}
您的代码还有很多其他问题。例如,严格建议将 always unformat 回调与 formatter
.
一起定义
似乎使用自定义格式化程序会使单元格停留在编辑模式,并且以前编辑过的行永远不会恢复。
JS,这里定义网格
$(priceListGrid).jqGrid({
datatype: 'local',
url: common.getServerPath() + 'controller/action',
mtype: 'POST',
jsonReader: common.jqgrid.jsonReader('Id'),
colModel: [
{ name: 'MethodCode', label: 'MethodCode', index: 'MethodCode', hidden: true },
{ name: 'PriceCode', label: 'Price Code', index: 'PriceCode', width: '20px' },
{ name: 'Description', label: 'Description', index: 'Description', width: '34px' },
{ name: 'RoundTo', label: 'RoundTo', index: 'RoundTo', width: '10px' },
{
name: 'MinPrice',
label: 'Min Pr',
index: 'MinPrice',
width: '15px',
align: 'right',
formatter: customCurFormatter,
editable: true,
editrules: {
number: true,
minValue: 0,
custom: true,
custom_func: validateMinPrice
}
}
],
caption: 'Price Entity List',
hidegrid: false,
ignoreCase: true,
viewrecords: true,
recordtext: '{2} Entity(ies).',
autowidth: true,
shrinkToFit: true,
scroll: 1,
sortname: 'PriceCode',
sortorder: 'asc',
rowNum: 500,
altRows: true,
altclass: 'gridAltRowClass',
pager: '#pagerEntityPriceListDetails',
onCellSelect: priceItemSelect,
onSelectRow: onSelectPrice,
afterSubmitCell: function (rowid) {
this.setRowData(rowid, info.Data, null);
},
loadComplete: priceListEntityLoadComplete,
loadError: function (xhr, status, error) {
common.ajax.alsJsonError(xhr, status, error);
//stopDataLoading();
}//,
//loadBeforeSend: function () { isDataLoadingCount++; },
//beforeSelectRow: function () { return !getIsDataLoading(); }
})
这是格式化程序
var customCurFormatter = function (cellvalue, options, rowObject) {
return cellvalue.toFixed(rowObject.RoundTo);
}
使用它时,与 formatter:currency
不同,单元格在转到下一行时会停留在编辑模式。
如有任何想法,我们将不胜感激。
自定义格式化程序的当前代码是错误的,因为 toFixed
方法可以应用于 Number
而不是字符串。 cellvalue
至少在编辑期间有 String
类型。格式化程序代码的最小更改应该是
var customCurFormatter = function (cellvalue, options, rowObject) {
return Number(cellvalue).toFixed(rowObject.RoundTo);
}
您的代码还有很多其他问题。例如,严格建议将 always unformat 回调与 formatter
.