我需要合并单元格,如图所示:
答案 0 :(得分:3)
Flex(根据我的理解)不直接提供此功能。你有几个选择。
无论哪种方式,您可能需要在分层模型中排列数据。 (有3个孩子的家长似乎描述了您的问题)
我看到的第一个选项涉及直接将您的数据声明为advanceddatagrid的层次结构。如果您搜索分层高级数据网格,您应该能够在线查找教程。
或者,您可能希望始终显示数据,而不仅仅是在展开父级时。在这种情况下,您仍然需要分层模型,但您必须创建一个自定义itemrenderer,它能够表示一个父对象的所有子数据。 (在VBox / VGroup中有三个标签的itemrenderer可以用于您给出的示例)
如果这些没有帮助,或者您想了解更多有关某个解决方案的详细信息,请随时在评论中提问。
EDIT ::
作为itemrenderer的一个例子,这里是我使用过的类似itemrenderer的源代码。 (我只会填充两个标签,但如果您了解它正在做什么,您应该能够扩展它
<VBox xmlns:mx="http://www.adobe.com/2006/mxml"
implements="mx.controls.listClasses.IDropInListItemRenderer"
width="100%" height="100%"
verticalGap="0" paddingTop="5" paddingBottom="5"
horizontalScrollPolicy="off"
horizontalAlign="center">
<mx:Script>
<![CDATA[
import mx.controls.Label;
import mx.controls.dataGridClasses.DataGridListData;
import mx.controls.listClasses.BaseListData;
private var _listData:BaseListData;
[Bindable("dataChange")]
// Define the getter method.
public function get listData():BaseListData
{
return _listData;
}
// Define the setter method,
public function set listData(value:BaseListData):void
{
_listData = value;
}
override public function set data(value:Object):void
{
removeAllChildren();
if (value != null)
{
var myListData:DataGridListData = DataGridListData(listData);
var lLabel1:Label = new Label();
var lLabel2:Label = new Label();
lLabel1.text = value[myListData.dataField][0];
lLabel1.percentWidth = 0;
addChild(lLabel1);
lLabel2.text = value[myListData.dataField][1];
lLabel2.percentWidth = 0;
addChild(lLabel2);
}
}
]]>
</mx:Script>
</VBox>
我删除了很多专有代码,所以如果它没有任何意义,请告诉我。
这是可重用的,因此值[myListData.dataField],但如果您希望通过自己定义字段,可以轻松地使其更具体。此特定代码需要采用以下格式的数据,例如:
value[field][0] = "text1";
value[field][1] = "text2";
对象有:
var field:Array = [];
field[0] = "text1";
field[1] = "text2";