【发布时间】:2013-02-12 18:25:48
【问题描述】:
我有一个包含船舶对象的网格表(数据提供者接受船舶对象的数组集合),并在网格表中仅显示船舶名称和日期。我的 ship 对象有一个名为 checkList 的属性,它是一个布尔值,在我的复选框项目渲染器中用作数据绑定。(使复选框,勾选和取消勾选)
当我将 Image 对象添加到容器中时,我想选中我的复选框。被添加到容器中的 Image 对象有一个 id。我想将该图像 ID 与数据网格表中的 shipId 匹配,并选中该特定记录的复选框。
所以我的 Image 对象监听 add 事件,所以当 Image 对象添加到容器时。它调用 addHandler() 函数获取图像的 id,并通过数据网格表循环查找匹配的 id 并检查 CheckBox。我的循环工作得很好。使用 Alert.show() 我可以看到它与 id 匹配并将布尔值设置为 true,以便勾选复选框。但是复选框没有打勾。
这些是我的代码。即使该特定记录的 checkList 属性设置为 true。复选框未勾选。我不知道问题是什么。我是一名学生,刚接触 flex。有人可以帮帮我吗?
我的 MXML 视图:我的网格表
<s:DataGrid id="arrivalTable" x="-1" y="-1" width="302" height="205" requestedRowCount="4"
dataProvider="{myArrivalShips}" >
<s:columns>
<s:ArrayList>
<s:GridColumn dataField="shipName" headerText="Arrival Ships" itemRenderer="DesignItemRenderer.myCustomToolTipRenderer" width="130" ></s:GridColumn>
<s:GridColumn dataField="ETA" headerText="ETD" itemRenderer="DesignItemRenderer.myCheckBoxRenderer"></s:GridColumn>
</s:ArrayList>
</s:columns>
</s:DataGrid>
我的 Image 对象监听 add 事件。
displayImg.addEventListener(FlexEvent.ADD,addHandler);
这是我的 addHandler() 事件函数:
protected function addHandler(event:FlexEvent):void
{
var ImageShipId:String = Image(event.currentTarget).id;
var destination:BorderContainer = Image(event.currentTarget).owner as BorderContainer;
var destinationId:String = destination.id;
if( destinationId == "bct_HoldingArea" ){
for(var j:int = 0; j<arrivalTable.dataProvider.length; j++){
var myShip:Ship = arrivalTable.dataProvider.getItemAt(j) as Ship;
var myShipId:String = myShip.shipID.toString();
if(StringUtil.trim(myShipId) == StringUtil.trim(ImageShipId)){
myShip.checkList = true;
Alert.show("The ship name : " + myShip.shipName +"\n" + "The Ship selected : " + myShip.checkList);
}
}
}
}
我的复选框项目渲染器:
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" clipAndEnableScrolling="true">
<s:HGroup>
<s:Label text="{data.ETD}" paddingTop="8"/>
<s:CheckBox id="myCheckBox" enabled="false" selected="{data.checkList}" />
</s:HGroup>
【问题讨论】:
-
那到达表.validateNow();将 checkList 设置为 true 后?
-
这个问题的答案可能会对你有所帮助:stackoverflow.com/questions/15078627/…
-
@M.S.Nayak no sir didt work.:(
-
@www.Flextras.com 嗨,先生,我看到了您推荐的问题和答案。看起来他使用列表的选择属性来获取列表中的选定项目?我不知道我是否理解正确,如果我错了,请原谅我。对于我的情况,我没有选择任何行。所以 PropertyChangeEvent 我不能说它是否被选中?我也必须为我的复选框添加一个覆盖方法吗?如果必须,覆盖方法是什么?请你给我一个例子或指导我如何解决这个问题?
标签: apache-flex datagrid itemrenderer