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函数。
答案 0 :(得分:1)
如果您需要自定义以对本地jqGrid进行排序,则使用自定义非格式化程序是错误的方法。您需要的是使用sorttype
作为函数。查看the old answer,包括演示或this one。
使用sorttype
作为函数的最简单方法是从函数转换数据返回,该数据应该用于在相应的比较操作中定义,以定义网格中行的顺序。