`
shuwei_wang
  • 浏览: 7763 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

flex_DataGridColumn中文按照首字母拼音排序

阅读更多
整个页面全粘出来了!
费时费力啊,整了好长时间,不知道还有没有别的好的方法。。。
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2008/03/07/performing-case-insensitive-sorts-using-the-datagrid-control-in-flex/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
        import mx.collections.Sort;
            import mx.utils.ObjectUtil;
            import mx.utils.StringUtil;
   public  function isIn(min:int,max:int,n:int):Boolean{
      return min<=n && max>=n;
    }
   public  function convertChar(chineseChar:String):String
    {
   if(chineseChar!=null){
    var bytes:ByteArray = new ByteArray
     var str:String;
     for(var i:int=0;i<chineseChar.length;i++){
    bytes.writeMultiByte(chineseChar.charAt(i), "cn-gb");
    var n:int = bytes[i] << 8;
    n += bytes[i+1];
  
    if (isIn(0xB0A1, 0xB0C4, n))
     str=str+"a";
    if (isIn(0XB0C5, 0XB2C0, n))
     str=str+"b";
    if (isIn(0xB2C1, 0xB4ED, n))
     str=str+"c";
    if (isIn(0xB4EE, 0xB6E9, n))
    str=str+"d";
    if (isIn(0xB6EA, 0xB7A1, n))
     str=str+"e";
    if (isIn(0xB7A2, 0xB8c0, n))
    str=str+"f";
    if (isIn(0xB8C1, 0xB9FD, n))
     str=str+"g";
    if (isIn(0xB9FE, 0xBBF6, n))
     str=str+"h";
    if (isIn(0xBBF7, 0xBFA5, n))
     return "j";
    if (isIn(0xBFA6, 0xC0AB, n))
     str=str+"k";
    if (isIn(0xC0AC, 0xC2E7, n))
     str=str+"l";
    if (isIn(0xC2E8, 0xC4C2, n))
     str=str+"m";
    if (isIn(0xC4C3, 0xC5B5, n))
     str=str+"n";
    if (isIn(0xC5B6, 0xC5BD, n))
     str=str+"o";
    if (isIn(0xC5BE, 0xC6D9, n))
     str=str+"p";
    if (isIn(0xC6DA, 0xC8BA, n))
     str=str+"q";
    if (isIn(0xC8BB, 0xC8F5, n))
     str=str+"r";
    if (isIn(0xC8F6, 0xCBF0, n))
    str=str+"s";
    if (isIn(0xCBFA, 0xCDD9, n))
     str=str+"t";
    if (isIn(0xCDDA, 0xCEF3, n))
    str=str+"w";
    if (isIn(0xCEF4, 0xD188, n))
    str=str+"x";
    if (isIn(0xD1B9, 0xD4D0, n))
     str=str+"y";
    if (isIn(0xD4D1, 0xD7F9, n))
     str=str+"z";
   
     }
     return str;
    }
    return null;
    }
  
    private function value_sortCompareFunc(itemA:Object, itemB:Object):int {
      if (!itemA.hasOwnProperty("value")) {
                    itemA.value = null;
          }
               // Make sure itemB has a "value" property.
               if (!itemB.hasOwnProperty("value")) {
                   itemB.value = null;
              }
             
         var str1:String= convertChar(itemA.value);
           var str2:String=convertChar(itemB.value);
      return ObjectUtil.stringCompare(str1, str2, checkBox.selected);
             
   }
        ]]>
    </mx:Script>
    <mx:ArrayCollection id="arrColl">
        <mx:source>
            <mx:Array>
                <mx:Object index="1" value="阿董" />
                 <mx:Object  value="董珍宝" />
                 <mx:Object index="40" value="段远" />
                <mx:Object index="200" value="滨河村" />
                <mx:Object index="3" value="曹非" />
              
           
                <mx:Object index="5" />
            </mx:Array>
        </mx:source>
    </mx:ArrayCollection>

    <mx:ApplicationControlBar dock="true">
        <mx:CheckBox id="checkBox"
                label="case insensitive search:"
                labelPlacement="left"
                selected="true" />
    </mx:ApplicationControlBar>

    <mx:DataGrid id="dataGrid" dataProvider="{arrColl}">
        <mx:columns>
            <mx:DataGridColumn dataField="index"/>
            <mx:DataGridColumn dataField="value" sortCompareFunction="value_sortCompareFunc"/>
        </mx:columns>
    </mx:DataGrid>

</mx:Application>
分享到:
评论
1 楼 leonchen 2012-02-01  
var n:int = bytes[i] << 8;
    n += bytes[i+1];
改成
var n:int = bytes[i*2] << 8;
    n += bytes[i*2+1];
要不然多个中文字会有问题

相关推荐

    FLEX _HTTPService的调用方法

    根据提供的文件信息,我们可以深入探讨FLEX中的_HTTPService组件及其使用方法。此组件主要用于与Web服务进行通信,例如从服务器获取或发送数据。下面将详细解释如何使用_HTTPService组件,并通过示例代码来展示其...

    flex 映射DataGrid,修改DataGridColumn显示值

    在Flex中,我们可以通过多种方式来定制DataGrid中的DataGridColumn的显示内容,例如更改显示的文本或者根据不同的条件显示不同的符号等。下面我们将详细探讨如何实现这些功能。 ### 1. 自定义DataGridColumn显示...

    Flex_全选或取消DataGrid中的checkbox

    根据给定的信息,本文将详细解释如何在Flex中实现DataGrid中的checkbox全选或取消功能。这涉及到Flex的checkbox管理、事件监听与处理、以及如何使用Cairngorm框架进行模型层更新等内容。 ### 一、理解Flex DataGrid...

    Flex DataGrid DataGridColumn数据颜色多样化-类型替换

    此外,DataGrid和DataGridColumn还提供了许多其他高级功能,如条件格式化、自定义排序、列过滤等。你可以通过设置`styleName`、使用`rendererFactory`或使用更复杂的自定义组件来进一步扩展和定制显示效果。 总之,...

    DataGrid_draggableColumns_test.zip_FlashMX/Flex源码_Flex_

    在Flex开发中,DataGrid组件是一个非常重要的控件,它用于显示数据集合,并且提供了诸如排序、选择和编辑等功能。本示例“DataGrid_draggableColumns_test”是关于如何实现DataGrid列的拖放功能,这在创建动态、用户...

    datagrid.rar_Windows编程_Flex_

    DataGrid控件是Flex中用来展示表格数据的组件,它可以显示多行多列的数据,并提供了排序、选择、编辑等交互功能。在实际应用中,我们经常需要根据数据的不同状态或属性来改变单元格的背景色或字体色,以增强视觉效果...

    flex的dataGrid添加复选框(checkBox)

    在Flex编程中,DataGrid控件是用于展示数据集的一种常用组件,它可以显示表格形式的数据。在实际应用中,我们经常需要在DataGrid的每一行中添加复选框(checkBox),以便用户可以选择一行或多行数据进行操作。这个...

    flex Datagrid checkbox全选

    在Flex开发中,Datagrid是一种常用的组件,用于展示表格数据,而checkbox全选功能则是提高用户体验的一个重要特性。本文将详细讲解如何实现Flex Datagrid中checkbox的全选功能。 首先,我们要了解Flex Datagrid的...

    flex datagrid

    Flex DataGrid 是 Adobe Flex 中一个重要的组件,用于展示结构化数据。它以表格形式呈现,非常适合用来显示多列数据,并提供了排序、选择、编辑等多种功能。在这个教程中,我们将深入探讨 DataGrid 的基本使用和一些...

    Flex 表格单元格合并

    在Flex中,我们可以使用DataGridColumn的`headerRenderer`属性和`dataField`属性来控制行头的显示,而单元格的合并则需要利用`mergeCells()`方法。 对于行头的合并,我们可以通过自定义渲染器实现。自定义渲染器是...

    flex动态生成datagrid表头

    它能够灵活地处理大量数据,并提供排序、筛选等多种功能。而动态生成DataGrid表头则是在运行时根据数据源来创建列,这在处理未知数量或类型的列时非常有用。这个主题涉及到ActionScript编程和Flex布局理解。 动态...

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

    在Flex编程领域,DataGrid组件是开发者们常用的数据展示工具,尤其在处理大量结构化数据时,它能提供高效、可定制化的展示效果。本文将深入探讨Flex DataGrid的高级用法,通过实例源码来解析其核心特性,帮助开发者...

    Flex Datagrid checkbox实现

    Flex Datagrid提供了许多高级特性,如排序、过滤、分页等,可以通过自定义列样式、数据提供程序和事件处理来实现。此外,还可以通过使用ItemEditor实现单元格编辑,或者通过使用AdvancedDataGrid组件来处理更复杂的...

    FLEX的一个DataGrid例子

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

    flex datagrid 嵌套checkbox实现全选

    在Flex开发中,数据网格(DataGrid)是用于展示数据集合的强大组件,它允许用户以表格形式查看和操作数据。本示例关注的是在DataGrid中嵌套复选框(Checkbox),并实现全选功能。这在需要用户批量选择或操作数据的...

    Flex itemRenderer的详细教程

    ### Flex ItemRenderer 的详细教程 #### 一、ItemRenderer 概述 在 Flex 开发中,ItemRenderer 是一种非常强大的工具,它允许开发者自定义列表(List)、数据网格(DataGrid)等控件中每一项的外观和行为。通过 ...

    flex 树结构的列表

    Flex是一种基于ActionScript和MXML的开源框架,用于构建富互联网应用程序(RIA)。在Flex中,我们可以创建各种复杂的用户界面,其中包括树形结构的数据展示。本篇将详细讲解如何使用Flex来实现一个树结构的列表,即...

    Flex与JSON及XML的互操作

    ### Flex与JSON及XML的互操作 Flex作为一种强大的开源框架,允许开发者利用MXML(一种基于标签的语言)和ActionScript 3构建出丰富的互联网应用程序(RIA)。本文将深入探讨Flex如何与JSON和XML进行互操作,这对于...

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

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

    flex带复选框的datagrid

    DataGrid是Flex框架中用于展示表格数据的常用组件,它提供了丰富的数据绑定、排序、筛选等功能。但是,Flex原生的DataGrid并不直接支持带有复选框的列,因此开发者通常需要自定义组件来实现这一功能。 ### ...

Global site tag (gtag.js) - Google Analytics