提供功能时,jqGrid定制格式程序选项“ unformat”不起作用。

我正在为此选项提供功能。
custom formatter example
应该工作,但是不工作。

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

这是我的代码,(所有模块都包含在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的方法,在jquery.fmatter.js中,每一行都会调用unformatFunction。
我的怀疑是unformatFunction在排序时没有被调用。

我只是通过编辑the example确认了它不起作用,这是非常错误的。我想不出任何错误。它只是不调用colModel中指定的unformat函数。

最佳答案

如果您需要定制以对本地jqGrid进行排序,那么使用定制格式器是错误的方法。您需要使用sorttype作为功能。查看the old answer包括演示或this one

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

08-08 05:06