格式化Kendo网格列过滤百分比

时间:2015-06-03 21:43:16

标签: javascript kendo-ui kendo-grid kendo-datasource

我有一个kendo网格,我的数据源数据返回未知小数位数。所以我在数据源上使用解析函数来补偿它。

DefaultMonoCPP: {
    editable: false,
    type: "number",  
    parse: function(e) {
        return  kendo.parseFloat(kendo.toString(e,"p4")); 
    }
}

现在当我过滤时,我不希望它自动将百分比乘以100.所以我在列上设置了filterable

    {
        field: "DefaultMonoCPP",
        title: "Mono Cost",
        format: '{0:p4}',
        filterable: {
            ui: function(e) {
                e.kendoNumericTextBox({
                    //format: "{0:p4}",
                    //format: "p4",
                    format: "##.0000 \\%",
                    decimals: 4
                });
            }
        }
    }

但这会弄乱过滤后的数字(1.2700%=> 1.27)。所以过滤失败了。

JSFiddle澄清:http://jsfiddle.net/dmathisen/mecny50f/

有没有办法让解析和可过滤的工作一起正确?

1 个答案:

答案 0 :(得分:1)

我的建议是将数字文本框格式化为百分比,并将步长设置为0.01,使其一次递增/递减1%。如果您担心用户输入百分比作为整数,请在更改事件中处理。

e.kendoNumericTextBox({
    format: '{0:p4}',
    step: 0.01,
    decimals: 4,
    change: function () {
        var val = this.value();
        if (val > 1) {
            this.value(val / 100);
            this.trigger("change");
        }
    }
});

JSFiddle