用于预定义格式化程序的{jqGrid Unformatter

时间:2016-05-18 22:25:05

标签: jqgrid

我有一个jqGrid,其中colModel的格式化程序函数必须定义为字符串

{name:'FileSize', index:'FileSize', width:90, editable: true, 
                                            formatter: 'fileSizeFormatter'}

我无法使用以下格式化程序函数不是字符串,因为我在C#中在服务器端构建了colmodel。如果我可以使用非字符串格式化器定义unformatter将是一个解决方案,如 Here

所示
{name:'FileSize', index:'FileSize', width:90, editable: true, 
                                                formatter: fileSizeFormatter}

这是我需要使用fn.fmatter的fileSizeFormatter,因为我的格式化程序是作为字符串传递的,代码假设它是预定义的一个"选择",&# 34;货币" ...等

 
$.fn.fmatter.fileSizeFormatter = function (cellval, options) {
    var fileUnit = "B";
    if (cellval) {
        var fileUnit;
        var iKBFileSize;
        if (cellval < 1024) {
            iKBFileSize = cellval;
        } else {
            iKBFileSize = cellval / 1024;
            fileUnit = "KB";
        }

        var result = iKBFileSize.toFixed(1) + fileUnit;
        return result;
    }

    return cellval + fileUnit;
};

Sample

所以问题是如何为格式化程序定义unformatter,格式化程序作为字符串传递。当我执行grid.getrowdata或编辑单元格时,我的unformatter没有被使用。它通过文件单元获取数据。

$.unformat.fileSizeFormatter = function (cellvalue, options, cell) {
    return $('input', cellval).is(":checked") ? true : false;
};

1 个答案:

答案 0 :(得分:1)

您应该以另一种方式定义unformatter:

$.fn.fmatter.fileSizeFormatter.unformat = function (cellValue, options, elem) {
    return $(elem).find('input').is(":checked") ? true : false;
}

在定义格式化程序($.fn.fmatter.fileSizeFormatter)后,您应该定义无格式的原因。