格式剑道网格列过滤器的百分比

Format Kendo grid column filter for percentages

本文关键字:过滤器 百分比 网格 格式      更新时间:2023-09-26

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

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/

是否有任何方法可以使解析和可过滤的工作正确在一起?

我的建议是将数字文本框格式化为百分比,并将步长设置为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