level 1
zotixuwu
楼主
用datagrid做checkbox的全选,但是实际运行的时候出现了一个很奇怪的情况,如果显示结果是偶数行那么可以正确地实现全选操作,但是如果是奇数行的时候最中间的那行却无法被选上。经过测试初始设置标签为true默认是选上的,但是点击取消全选的话奇数行的最中间那行也不会改动。经过调试,用于标记选中状态的标签是变了的,但是界面显示却没响应。
截图如下:



其中倒数第二行显示的是isselect的数值。
代码如下
<s:DataGrid id="dataDg" x="27" y="14" width="600" height="292" dataProvider="{_soureBindData}" doubleClickEnabled="true" doubleClick="fixedMetadata()">
<s:columns>
<s:ArrayList>
<s:GridColumn width="25" headerText="">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:CheckBox horizontalCenter="0" verticalCenter="0" selected="@{data.isselect}" click="outerDocument.selectcheckbox(data,event)"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
<s:GridColumn dataField="TH" headerText="图号"></s:GridColumn>
<s:GridColumn dataField="TM" headerText="图名"></s:GridColumn>
<s:GridColumn dataField="BLC" headerText="比例尺/等级"></s:GridColumn>
<s:GridColumn dataField="FBL" headerText="分辨率"></s:GridColumn>
<s:GridColumn dataField="DATA_DATE" headerText="时间"></s:GridColumn>
<s:GridColumn dataField="isselect" headerText="时间"></s:GridColumn>
<s:GridColumn dataField="METADATA_NO" headerText="操作">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<mx:LinkButton label="详细" textDecoration="underline" color="0x0050AA" click="{outerDocument.DisplayMetadataListByNo(data.METADATA_NO,data.PARTITION_ID)}" />
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
</s:ArrayList>
</s:columns>
</s:DataGrid>
<mx:HBox x="32" y="304" width="600" height="54" verticalAlign="middle">
<s:CheckBox id="cbox" selected="{initCheckbox}" horizontalCenter="0" verticalCenter="0" click="selectedAllorNot(event)" />
public function selectedAllorNot(event:MouseEvent):void{
checkbox = event.currentTarget as CheckBox;
/* for each(var item:Object in _SourceData){
item.isselect = checkbox.selected;
for(var i:Number=0;i<_soureBindData.length;i++){
if(item.METADATA_NO==_soureBindData.getItemAt(i).METADATA_NO){
_soureBindData.getItemAt(i).isselect=item.isselect;
}
}
} */
for(var j:Number=0;j<_SourceData.length;j++){
_SourceData.getItemAt(j).isselect= checkbox.selected;
}
for(var i:Number=0;i<_soureBindData.length;i++){
_soureBindData.getItemAt(i).isselect=checkbox.selected;
}
//(dataDg.dataProvider as ArrayCollection).refresh();
_soureBindData.refresh();
this.dataDg.dataProvider=_soureBindData;
}
public function selectcheckbox(obj:Object,event:MouseEvent):void{
checkbox = event.currentTarget as CheckBox;
for(var i:Number=0;i<_soureBindData.length;i++){
if(obj.METADATA_NO==_soureBindData.getItemAt(i).METADATA_NO){
_soureBindData.getItemAt(i).isselect=checkbox.selected;
break;
}
}
for(var j:Number=0;j<_SourceData.length;j++){
if(obj.METADATA_NO==_SourceData.getItemAt(j).METADATA_NO){
_SourceData.getItemAt(j).isselect=checkbox.selected;
break;
}
}
_soureBindData.refresh();
}
2015年10月10日 08点10分
1
截图如下:



其中倒数第二行显示的是isselect的数值。代码如下
<s:DataGrid id="dataDg" x="27" y="14" width="600" height="292" dataProvider="{_soureBindData}" doubleClickEnabled="true" doubleClick="fixedMetadata()">
<s:columns>
<s:ArrayList>
<s:GridColumn width="25" headerText="">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<s:CheckBox horizontalCenter="0" verticalCenter="0" selected="@{data.isselect}" click="outerDocument.selectcheckbox(data,event)"/>
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
<s:GridColumn dataField="TH" headerText="图号"></s:GridColumn>
<s:GridColumn dataField="TM" headerText="图名"></s:GridColumn>
<s:GridColumn dataField="BLC" headerText="比例尺/等级"></s:GridColumn>
<s:GridColumn dataField="FBL" headerText="分辨率"></s:GridColumn>
<s:GridColumn dataField="DATA_DATE" headerText="时间"></s:GridColumn>
<s:GridColumn dataField="isselect" headerText="时间"></s:GridColumn>
<s:GridColumn dataField="METADATA_NO" headerText="操作">
<s:itemRenderer>
<fx:Component>
<s:GridItemRenderer>
<mx:LinkButton label="详细" textDecoration="underline" color="0x0050AA" click="{outerDocument.DisplayMetadataListByNo(data.METADATA_NO,data.PARTITION_ID)}" />
</s:GridItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:GridColumn>
</s:ArrayList>
</s:columns>
</s:DataGrid>
<mx:HBox x="32" y="304" width="600" height="54" verticalAlign="middle">
<s:CheckBox id="cbox" selected="{initCheckbox}" horizontalCenter="0" verticalCenter="0" click="selectedAllorNot(event)" />
public function selectedAllorNot(event:MouseEvent):void{
checkbox = event.currentTarget as CheckBox;
/* for each(var item:Object in _SourceData){
item.isselect = checkbox.selected;
for(var i:Number=0;i<_soureBindData.length;i++){
if(item.METADATA_NO==_soureBindData.getItemAt(i).METADATA_NO){
_soureBindData.getItemAt(i).isselect=item.isselect;
}
}
} */
for(var j:Number=0;j<_SourceData.length;j++){
_SourceData.getItemAt(j).isselect= checkbox.selected;
}
for(var i:Number=0;i<_soureBindData.length;i++){
_soureBindData.getItemAt(i).isselect=checkbox.selected;
}
//(dataDg.dataProvider as ArrayCollection).refresh();
_soureBindData.refresh();
this.dataDg.dataProvider=_soureBindData;
}
public function selectcheckbox(obj:Object,event:MouseEvent):void{
checkbox = event.currentTarget as CheckBox;
for(var i:Number=0;i<_soureBindData.length;i++){
if(obj.METADATA_NO==_soureBindData.getItemAt(i).METADATA_NO){
_soureBindData.getItemAt(i).isselect=checkbox.selected;
break;
}
}
for(var j:Number=0;j<_SourceData.length;j++){
if(obj.METADATA_NO==_SourceData.getItemAt(j).METADATA_NO){
_SourceData.getItemAt(j).isselect=checkbox.selected;
break;
}
}
_soureBindData.refresh();
}