根据colModel规范输入jqgrid行数据

时间:2012-01-19 14:38:30

标签: javascript jqgrid

jqgrid允许将类型信息指定为colModel的一部分,例如

editrules:{required:true, number: true},

虽然这只影响验证,但检索所有行数据会很好 使用此信息。

jqGrid('getRowData')

将所有数据作为字符串

返回

是否有可能将结果转换为类型信息(如果使用JSON在提交时使用JSON进行编码/解码,则应将数字:true的列转换为整数,以便在Web服务器端将其作为整数处理网格数据)。

1 个答案:

答案 0 :(得分:0)

问题是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中的templatecolModel参数编写自己的安全方法,以获取所需信息。