我有一个显示产品详细信息的数据网格。对于特定产品,我需要显示其Id当前状态(可用/不可用)以及它属于哪个类别。类别部分与它看起来有点不同。
产品A属于A,B和C类,而产品B属于A,C和D等。该表的结构类似于
类别列从数据库中检索并作为参数传递,以在Datagrid中动态构造列。
我在UI上定义了以下Datastructure来处理这个问题。
Product{
var productId:String;
var productName:String;
var status:String;
var categoryList:ArrayCollection;
}
我不确定这是否能够解决我的问题。 我想我需要一个包含类别名称的地图,如果它适用于该产品。
有关如何渲染此数据网格的任何指针都非常有用。
答案 0 :(得分:2)
一般情况下,要解决您的问题,您需要创建另一个Datastructure:
Category{
var id:Number;
var name:String;
}
之后,您将需要扩展DataGridColumn。添加“category”属性。 生成列将是这样的:
for each(var category:Categoty in categories){
var column:CategoryDataGridColumn = new CategoryDataGridColumn();
column.category = category;
column.itemRenderer = CategoryItemRenderer;
datagrid.columns.push(column);
}
CategoryItemRenderer将扩展基本的DataGrid Item Renderer。会有这样的事情:
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;
}