zoukankan      html  css  js  c++  java
  • Flex:在DataGrid中处理Column值的显示(原创)

    今天我碰到的一个问题是:DataGrid对象某一列所对应的属性是一个复杂对象,比如DataGrid是要显示书的列表,使用python后台返回结果,其作者一列对应的是一个Author对象。现在我想在Book的"作者”这一列中显示作者名称。
         解决方法:首先在mxml文件中,添加该列。          
               <mx:DataGridColumn id="colAuthor" headerText="作者" dataField="Author" width="100"/>。值得注意的是,这里的dataFiled必须就是其对应的属性。比如,DataGrid绑定的数据源是这样定义的:{"Bookname","Author","PublicDate"},其中Author定义为{“Name”,"Age","Gender","Nationality"}等等。
    那么在这个DataGridColumn 中,dataField就必须指定为"Author".
                       其次,我们要修改这个DataGridColumn的列的显示内容(否则它只会显示”object“,显然不是我们想要的)。
    private function formatAuthor(item:Object, c:DataGridColumn):String  //定义要显示什么内容给这个column。
    {
        return item.Author.Name;   //注意,这里直接写Author。因为item就是指Book对象。
    }
    然后将这个函数作为该column的labelFunction.    colAuthor.labelFunction = formatAuthor;  //设定LabelFunction.这里,colAuthor是该列的ID。这样便可以了。
      还有另外一点值得说明:我们这样修改,到时候单击DataGrid头部标题进行排序时就会出问题。因为,DataGrid内部找不到对”Author“类型排序的函数。因为该列绑定的是”Authro“。所以我们必须显式提供一个排序函数。方法如下:
    private function AuthorSortFunc(obj1:Object, obj2:Object):int
    {
      //这里调用了labelFunction来获得该列的内容。这样做是为了使得我们以后可以不用重复地写比较函数。
        return ObjectUtil.stringCompare(colAuthor.labelFunction(obj1, colAuthor),colAuthor.labelFunction(obj2, colAuthor));
    }
    然后将这个函数作为该column的sortCompareFunction 。    colAuthor.sortCompareFunction = AuthorSortFunc; //设置排序函数

            ----David Cai 2009-08-22午于金山公司
  • 相关阅读:
    windows 按时自动化任务
    Linux libusb 安装及简单使用
    Linux 交换eth0和eth1
    I.MX6 GPS JNI HAL register init hacking
    I.MX6 Android mmm convenient to use
    I.MX6 GPS Android HAL Framework 调试
    Android GPS GPSBasics project hacking
    Python windows serial
    【JAVA】别特注意,POI中getLastRowNum() 和getLastCellNum()的区别
    freemarker跳出循环
  • 原文地址:https://www.cnblogs.com/xingluzhe/p/1551993.html
Copyright © 2011-2022 走看看