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午于金山公司
  • 相关阅读:
    Android studio 搭建测试环境 创建虚拟机
    Halcon算子翻译——break
    Halcon算子翻译——throw
    halcon算子翻译——stop
    halcon算子翻译——return
    halcon算子翻译——par_join
    Halcon算子翻译——import
    Halcon算子翻译——global
    Halcon算子翻译——export_def
    Halcon算子翻译——exit
  • 原文地址:https://www.cnblogs.com/xingluzhe/p/1551993.html
Copyright © 2011-2022 走看看