jqGrid自定义格式化程序选项“unformat”不起作用

时间:2011-03-31 22:32:33

标签: jqgrid formatter

jqGrid自定义格式化程序选项“unformat”在提供函数时不起作用。

我正在为此选项提供功能。 custom formatter example 假设工作但不起作用。

我使用unformat函数的主要目的是为sort函数赋予适当的值(当你通过点击可排序列标题进行排序时)调用unformat和formatter提供给colModel。

这是我的代码,(所有模块都包含在jquery UI和jqgrid中。)

<link href="../css/jquery-ui-1.8.11.custom.css" rel="stylesheet" type="text/css"/>
<link href="../css/ui.jqgrid.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../js/jquery-1.5.2.js"></script>
<script type="text/javascript" src="../js/jquery-ui-1.8.11.custom.min.js"></script>
<script type="text/javascript" src="../js/jquery.jqGrid.min.js"></script>


    $("#GridTable").jqGrid({
    datatype: "local",
    colNames: ['id', 'col1', 'col2', 'col3', 'col4'],
    colModel: [{name:'id',index:'id', align:'left', width:'260px'},
                {name:'col1',index:'col1', width:'170px'},
                {name:'col2',index:'col2', width:'160px'},
                {name:'col3',index:'col3', sorttype:'float', width:'110px',unformat: unformatterFunction, formatter: formatterFunction },
                {name:'col4',index:'col4', sorttype:'float', width:'110px'}
             ],
    altRows: true,
    caption: "Test Data",
    height: '100%',
    autowidth : true,
    shrinkToFit: true,
});

function unformatterFunction(cellvalue, options, rowObject){
    if(cellvalue=="-"){
        return "0";
    }
    return cellvalue;
}

function formatterFunction(cellvalue, options, rowObject){
    if(cellvalue > 15){
        return "-";
    }
    return cellvalue;
}

我花了很多时间来跟踪对grid.base.js的调用,发现没有办法转到jquery.fmatter.js,其中每行调用unformatFunction。 我怀疑是unformatFunction在排序时没有被调用。

我刚刚通过编辑the example确认它不起作用,有些事情是非常错误的。我想不出任何错误。它根本不会调用colModel中指定的unformat函数。

1 个答案:

答案 0 :(得分:1)

如果您需要自定义以对本地jqGrid进行排序,则使用自定义非格式化程序是错误的方法。您需要的是使用sorttype作为函数。查看the old answer,包括演示或this one

使用sorttype作为函数的最简单方法是从函数转换数据返回,该数据应该用于在相应的比较操作中定义,以定义网格中行的顺序。