【问题标题】:Replacing a NaN value with null in DataGrid in flex在 flex 中的 DataGrid 中用 null 替换 NaN 值
【发布时间】:2013-12-31 15:39:02
【问题描述】:
<mx:AdvancedDataGridColumn headerText="{Mlc.curr.get('column 1')}" dataField="datafield1" labelFunction="getTotalQty"/>


private function getTotalQty(inData:Object, inCol:AdvancedDataGridColumn):String
        {
            return (isNaN(inData.qty)?"":inData.qty);
        }

目前这会为每个单元格返回一个空的数据网格单元格。无论单元格是 NaN 还是其中有数字。

数据网格被传递了几个对象,对象 0 有 NaN,因此返回一个空框,对象 1 有值 70,仍然返回一个空框。

【问题讨论】:

    标签: actionscript-3 apache-flex nan advanceddatagrid labelfunction


    【解决方案1】:

    inData 是一个通用对象;这可能意味着 qty 也是无类型的;因为它不是对象的默认属性。这就是它未能通过 isNaN 测试的原因。尝试将 inData 转换为您的自定义对象或将 inData.qty 转换为数字。

    类似这样的:

    private function getTotalQty(inData:Object, inCol:AdvancedDataGridColumn)
    {
                var qtyAsNumber : Number = Number(inData.qty);
                return (isNaN(qtyAsNumber)?"":qtyAsNumber.toString());
    }
    

    【讨论】:

    • 我在使用这种方法时得到了相同的结果,我从你的代码中删除了冒号以使其编译,但它对我不起作用。还有什么我可以尝试的吗?
    • 在调试模式下运行你的代码;并通过查看变量来查看方法中发生了什么。也许 inData.qty 不是数字?能否提供完整的可运行示例?
    • 非常感谢它现在适用于 1 列。 inData.qty 不是一个数字,我可以通过调用 inData.ColumnName 来让它工作,但是我需要这个标签格式化程序来处理多个列,这些列显然不会有相同的名称。但是,inData 对象仅包含所有列名及其值,因此如果每列没有不同的格式化程序,我就看不到这样做的方法。有没有办法避免这种情况?
    • 如果它们在数据网格中根本没有数据网格,标签格式化程序应用到的列将显示为 0?我可以将其更改为什么都不显示。谢谢
    • *数据网格中没有数据,数据网格中根本没有数据网格。道歉
    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 2019-04-22
    • 2023-03-04
    • 2019-11-08
    • 1970-01-01
    • 2019-09-29
    • 2021-02-27
    • 2016-06-25
    相关资源
    最近更新 更多