`
三问飞絮
  • 浏览: 320610 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

DataGrid/ArrayCollection排序问题总结

阅读更多

1,Find criteria must contain at least one sort field value.

Error: Find criteria must contain at least one sort field value. 
at mx.collections::Sort/findItem()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\collections\Sort.as:491] 
at mx.collections::ListCollectionView/getItemIndex()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:513] 
at ListCollectionViewCursor/collectionEventHandler()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:2154] 
at flash.events::EventDispatcher/dispatchEventFunction() 
at flash.events::EventDispatcher/dispatchEvent() 
at mx.collections::ListCollectionView/dispatchEvent()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\collections\ListCollectionView.as:833] 
at mx.collections::ListCollectionView/internalRefresh()[C:\autobuild\3.2.0

   

    网上有不少人碰到,但似乎不是同个问题。

    问题重现:先在DataGrid点击某列,进行排序。然后再新增一行新的记录。记录属性值为空。

    问题解决:

    A,实际解决方法

         通过排查,发现新增加的记录的对象定义中,如果有一个以上的字段类型定义为(*)的,就会抛出此项错误。

         如 var name:*;//出错

         改为 var name:Object;//正常

    B,查看源码(Sort.as 491行)

     if (compareFunction == null)  //436Line
        {///中间省略N行
             if (fieldsForCompare.length == 0)
                {
                 message = resourceManager.getString( //491Line
                  "collections", "findRestriction");
                    throw new SortError(message);
                }
         }
        else//505Line
        {
            compareForFind = compareFunction;
        }

      这里从436到505行之间的所有判断,都源于compareFunction为空的处理,如果为该ArrayCollection.sort属性设置排序函数,即不会进入这个判断语句中。[只是判断,未实践]

 

 

 2,排序顺序不正常(空值排中间)

  为DataGridColumn设置默认的排序函数。此处为继承了该类。

public function sortCompareFunctionHandler(rowa:Object,rowb:Object):int{
	var a:String  = itemToLabel(rowa);
	var b:String  = itemToLabel(rowb);
	if(a == b) return 0; 
	if(a == null || a == "") return -1;
	if(b == null || b == "") return 1;
			
	return ObjectUtil.stringCompare(a,b);
}

 

 



 

  • 大小: 17.1 KB
分享到:
评论

相关推荐

    dataGrid中文排序

    为了解决这个问题,我们需要自定义排序函数,这通常涉及字符集的处理和字符串比较的算法。 `SortUtil.txt`文件可能包含了自定义的排序工具类,这个类可能会包含以下关键方法: 1. `compareChineseStrings`:这是一...

    Flex中如何创建自定义排序DataGrid控件的例子

    在Flex开发中,DataGrid控件是用于展示数据集的常用组件,它可以显示表格形式的数据并支持用户交互,如排序、选择和编辑。然而,有时我们可能需要对DataGrid的默认排序功能进行自定义,以满足特定的业务需求。本教程...

    flex datagrid按数字顺序,字母顺序排序

    Flex DataGrid是Adobe Flex框架中用于显示和操作数据集的一个组件,它允许用户对数据进行排序,以便更好地理解和分析数据。本篇文章将深入探讨如何在Flex DataGrid中实现按数字顺序和字母顺序的排序功能。 首先,...

    ArrayCollection不完全绑定

    然而,尽管ArrayCollection通常被用作数据绑定的主要工具,但在特定情况下,可能会遇到“ArrayCollection不完全绑定”的问题。这个问题通常表现为试图绑定到ArrayCollection的部分属性或方法时,绑定不生效或者结果...

    flex datagrid

    3. **ArrayTest.mxml**:这个文件可能包含一个示例,展示了如何使用ArrayCollection作为数据源驱动DataGrid。ArrayCollection是ActionScript中轻量级的数据容器,能方便地与Flex组件进行数据绑定。 4. **tree.mxml*...

    DataGrid控件

    源码可能涵盖了自定义DataGrid功能、优化性能或解决特定问题的代码示例。工具可能是指用于辅助开发、调试或增强DataGrid功能的第三方库或插件。 虽然没有具体的压缩文件内容可供参考,但“Flex3控件使用.doc”这个...

    DataGrid和AdvancedDataGrid CheckBox全选功能1.1

    AdvancedDataGrid则是DataGrid的增强版,提供了更丰富的数据显示和排序、分组等功能,适合处理大量复杂数据。 全选功能通常涉及到两个主要部分:主CheckBox控件和DataGrid/AdvancedDataGrid中的数据项。当主...

    Flex4之DataGrid四个的示例【客户端和服务器端】

    1. DataGrid组件简介:DataGrid是Flex中一个功能强大的表格控件,可以显示多列数据,并支持排序、选择、分页等操作。它适用于展示结构化的数据集合,如数据库查询结果或者XML数据。 2. 使用步骤: - 创建DataGrid...

    flex组件之DataGrid高级用法实例源码

    在Flex中,DataGrid通常与数据提供者(如 ArrayCollection 或 XML)关联,用于动态展示数据。 二、高级用法详解 1. **自定义列** DataGrid允许我们自定义列的显示样式和行为。例如,可以创建自定义的Column类,...

    FLEX的一个DataGrid例子

    在Flex开发中,DataGrid控件是一个非常重要的组件,它被广泛用于展示和操作结构化的数据,例如数据库表格或者XML列表。本例子旨在帮助开发者更好地理解和应用DataGrid,通过实例来学习其基本功能和特性。 DataGrid...

    DataGrid控件使用及HTTPService参数传递说明

    在Flex开发中,DataGrid控件是用于展示数据表格的强大工具,它允许用户对大量数据进行排序、筛选和编辑。本教程将深入讲解如何有效利用DataGrid控件,并结合HTTPService进行参数传递,以实现与服务器的数据交互。...

    flash中datagrid用法及外部类的引入.rar

    10. **自定义行为**:通过覆盖DataGrid的默认行为,可以实现更复杂的交互,比如自定义排序、分页等。 以上就是Flash中DataGrid的基本用法和外部类的引入。实践中,开发者可以根据项目需求进行更深入的定制和扩展,...

    Flex4.5导入Excel/csv到DataGrid及DataGrid右键

    DataGrid是一种用于显示结构化数据的组件,它可以显示多列数据,并支持排序、选择和编辑等功能。在导入Excel或CSV数据时,我们通常会使用Flash Player的FileReference类来处理文件选择,然后通过AS3解析文件内容,将...

    flex datagrid 前台 分页

    4. **数据排序和过滤**:如果需要在前台进行数据排序或过滤,要确保这些操作不会影响到整个数据集,只对当前页的数据进行操作。 5. **状态保存**:如果应用有多个视图或用户离开后再返回,需要保存用户的分页状态,...

    Flex创建可编辑以及分页的DataGrid

    它能够以表格形式显示数据,支持排序、筛选、编辑等功能,极大地增强了用户界面的交互性。本篇文章将深入探讨如何在Flex中创建一个既可编辑又具有分页功能的DataGrid。 首先,我们需要导入必要的库和类。在Flex项目...

    Flex:ArrayCollection转xml形式的实例

    ArrayCollection是基于Array的,但提供了对数据的更高级别的访问,如排序和过滤功能。在某些情况下,我们需要将ArrayCollection转换为XML格式,以便于数据交换或存储。本实例将详细介绍如何实现这一转换。 首先,...

    flex DataGrid xml 动态数据列表实例

    `DataGrid`可以自动调整列宽,并支持排序、选择等功能,提供了一种高效的数据展示方式。 要将XML数据绑定到`DataGrid`,我们需要经过以下几个步骤: 1. **创建XML文件**:XML是一种轻量级的数据交换格式,常用于...

    Flex4 DataGrid控件行编辑项目

    在Flex4.6开发环境中,DataGrid控件是用于展示数据集合的重要组件,它提供了丰富的功能,如排序、分页和自定义列显示。在这个项目中,我们关注的是如何实现DataGrid的行编辑功能,特别是在行中嵌套ComboBox控件以...

Global site tag (gtag.js) - Google Analytics