問題是,jqGrid有沒有有關數據類型的信息。有格式化程序,排序,編輯和搜索選項來構建編輯或搜索控件,驗證選項等,但沒有有關數據類型的信息。
此外,jqGrid在許多情況下接收輸入數據作爲字符串。即使是JavaScript類型number
也不是真正想要的,因爲JavaScript沒有integer
數據類型。
getRowData
方法使用unformatter讀取單元格的字符串內容。在某些情況下,例如,如果您使用datatype: 'local'
和data
參數填補了網格,輸入數據保存在內部data
和_index
參數,你可以使用參數,以獲得鍵入關於小區信息包含的內容。
例如,你如果定義持有的日期列定義可以是以下
{ name: 'invdate', index: 'invdate', width: 80, align: 'center',
sorttype: 'date',
formatter: 'date', formatoptions: { newformat: 'd-M-Y' }, editable: true,
datefmt: 'd-M-Y',
editoptions: {
dataInit: function (elem) {
setTimeout(function() {
$(elem).datepicker({
dateFormat: 'dd-M-yy',
autoSize: true,
changeYear: true,
changeMonth: true,
showButtonPanel: true,
showWeek: true
});
}, 100);
}},
editrules: {required: true, date: true},
searchoptions: {
sopt: ['eq', 'ne', 'lt', 'le', 'gt', 'ge'],
dataInit: function (elem) {
setTimeout(function() {
$(elem).datepicker({
dateFormat: 'dd-M-yy',
autoSize: true,
changeYear: true,
changeMonth: true,
showWeek: true,
showButtonPanel: true
});
}, 100);
}}}
你在一個多少地方必須指定「日期」類型看。
我建議您使用列模板(有關更多信息,請參閱here)。在我的項目,我實現了我定義的客戶(在一個共同的JavaScript文件),如dateTemplate
一些模板,定義在網格中列狀
{name: 'invdate', index: 'invdate', width: 80, template: my.dateTemplate}
其中my.dateTemplate
在簡化形式定義如下
var my = {
dateTemplate: {
align: 'center',
sorttype: 'date',
formatter: 'date', formatoptions: { newformat: 'd-M-Y' }, editable: true,
datefmt: 'd-M-Y',
editoptions: {
dataInit: function (elem) {
setTimeout(function() {
$(elem).datepicker({
dateFormat: 'dd-M-yy',
autoSize: true,
changeYear: true,
changeMonth: true,
showButtonPanel: true,
showWeek: true
});
}, 100);
}},
editrules: {required: true, date: true},
searchoptions: {
sopt: ['eq', 'ne', 'lt', 'le', 'gt', 'ge'],
dataInit: function (elem) {
setTimeout(function() {
$(elem).datepicker({
dateFormat: 'dd-M-yy',
autoSize: true,
changeYear: true,
changeMonth: true,
showWeek: true,
showButtonPanel: true
});
}, 100);
}}}
};
模板作爲數據類型發揮密切作用。如果您需要,您可以根據getRowData
和template
參數colModel
編寫自己的安全方法,以獲取所需的信息。