【问题标题】:Flex datagrid universal numeric sorting function?Flex datagrid 通用数值排序功能?
【发布时间】:2008-11-12 14:46:47
【问题描述】:

我使用的是 Flex 数据网格,需要对我的一些列进行数字排序。
查看 sortCompareFunction,似乎我需要为要排序的每一列创建一个不同的函数,因为我的排序函数必须知道它正在排序的字段。

有什么方法可以将要排序的字段传递给函数?所以我只需要一个数字排序函数。

【问题讨论】:

    标签: apache-flex sorting datagrid


    【解决方案1】:

    我是用这个函数做到的:

    function fieldNumericSorter(field:String):Function {
        返回函数(obj1:Object,obj2:Object):int {
            返回符号(int(obj1[field])-int(obj2[field]));
        }
    }

    对于需要排序集的每一列

    colToBeSorted.sortCompareFunction = fieldNumericSorter("fieldname");

    【讨论】:

      【解决方案2】:

      如果您使用带有 XML 数据提供程序的 DataGrid,这对我有用(根据 Alex 的回答修改):

      private function xmlDataGridNumericSorter(field:String):Function 
      {
      
          return function (obj1:Object, obj2:Object):int 
          {
              var num:Number = ((Number)(obj1.attribute(field)) - (Number)(obj2.attribute(field)));
              return (num > 0) ? 1 : ((num < 0) ? -1 : 0);
          }
      
      }
      

      dataGridColumn.sortCompareFunction = xmlDataGridNumericSorter(xmlAttribute.name().toString());
      

      一个非常好的解决方案,考虑到这可能是一个多么常见的过程..

      感谢亚历克斯,希望这可以进一步帮助人们。

      【讨论】:

        【解决方案3】:

        我没有使用数字函数进行排序 - 而是执行了以下操作:

        arrayCollObject.addItem({Col1: rowData[0], Col2: parseFloat(rowData[1])});

        这似乎正确地进行了排序。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-08-10
          • 1970-01-01
          • 2013-11-19
          • 1970-01-01
          • 2010-10-17
          • 2011-08-21
          • 2013-05-21
          相关资源
          最近更新 更多