• 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午于金山公司
  • 相关阅读:
    iOS MDM证书制作
    iOS 跳转到设置界面
    创建自己的远程私有库
    制作属于自己的cocoapod仓库和spec
    iOS 推送通知证书制作
    自定义导航栏之滑动返回
    xcode使用xib创建cell ,出现崩溃问题
    Xcode使用xib拖线时出现: could not insert new outlet connection
    2014年糯米网校招测试工程师题目解析
    JAVA操作LDAP的详解(JLDAP)
  • 原文地址:https://www.cnblogs.com/xingluzhe/p/1551993.html
Copyright © 2020-2023  润新知