【问题标题】:Rendering a datagrid with dynamic columns in Flex在 Flex 中呈现具有动态列的数据网格
【发布时间】:2011-07-17 17:42:45
【问题描述】:

我有一个显示产品详细信息的数据网格。对于特定产品,我需要显示其 Id 当前状态(可用/不可用)以及它属于哪个类别。类别部分与看起来的有点不同。

产品 A 可以属于类别 A、B 和 C,而产品 B 属于类别 A、c 和 D,依此类推。该表的结构类似于

从数据库中检索类别列并作为参数传递以在 Datagrid 中动态构建列。

我在 UI 上定义了以下数据结构来处理这个问题。

Product{
var productId:String;
var productName:String;
var status:String;
var categoryList:ArrayCollection;
}

我不确定这是否能解决我的问题。 我想我需要一个包含类别名称的地图,以及它是否适用于该产品。

任何有关如何渲染此数据网格的指示都会非常有帮助。

【问题讨论】:

    标签: java apache-flex actionscript-3 user-interface ria


    【解决方案1】:

    一般情况下,要解决您的问题,您需要创建另一个数据结构:

    Category{
     var id:Number;
     var name:String;
    }
    

    之后,您将需要扩展 DataGridColumn。向其中添加“类别”属性。 生成列会是这样的:

    for each(var category:Categoty in categories){
     var column:CategoryDataGridColumn = new CategoryDataGridColumn();
     column.category = category;
     column.itemRenderer = CategoryItemRenderer;
     datagrid.columns.push(column);
    }
    

    CategoryItemRenderer 将扩展基本的 DataGrid 项渲染器。会有这样的东西:

    override protected function commitProperties():void
    {
     super.commitProperties();
     if(_dataChanged)
     {
      _dataChanged = false;
      text = getText();
     }
    }
    
    private function getText():String
    {
     var result:String = “Not Belongs”
     var columnCategory:Category = CategoryDataGridColumn(listData.owner.columns[listData.columnIndex]).category;
     for each(var category:Category in Product(data).categoriesList)
     {
      if(columnCategory.id == category.id)
      {
       result = “Belongs”;
       break;
      }
     }
     return result;
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-29
      • 2021-09-16
      • 2018-10-24
      • 2023-03-28
      • 1970-01-01
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      相关资源
      最近更新 更多