有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Flex中呈现具有动态列的datagrid

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

产品A可以属于A、B和C类,而产品B属于A、C和D类,依此类推。这张桌子的结构应该是

enter image description here

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

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

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

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

任何关于如何呈现这个datagrid的指针都会非常有用


共 (1) 个答案

  1. # 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;
    }