Flex 使用DataGrid内嵌进度条ProgressBar上传文件显示错误的处理方法

1 篇文章 0 订阅
1 篇文章 0 订阅

第一次上传文档时进度条能正常显示百分比变化,当我清空DataGrid关联的ArrayCollection后再次选择需要上传的文件时,进度条显示为100%(显示100%的条目和历史最大上传文件个数相同,超过的部分仍然能够正常显示为0%)。

我的想法是手动的去重置ProgressBar的进度值

首先是获取DataGrid内嵌的ProgressBar对象。由于ProgressBar是内嵌在DataGrid中,无法通过直接调用id来访问ProgressBar对象,这里就需要在外层定义一个变量去引用它。这里我定义了一个PhotoProgressBar的数组来引用他们。利用ProgressBar的creationComplete()事件将进度条加入外围的进度条数组。

public  var PhotoProgressBar:Array = [];

<s:DataGrid x="1" y="26" width="432" height="159" id="dataGrid" requestedRowCount="4">
	<s:columns>
		<s:ArrayList>
			<s:GridColumn width="150" headerText="文件名" dataField="name"></s:GridColumn>
			<s:GridColumn headerText="大小(字节)" dataField="size" width="80"></s:GridColumn>
			<s:GridColumn headerText="上传状态" width="200">
				<s:itemRenderer>
					<fx:Component>
						<s:GridItemRenderer>
							<fx:Script>  
								<![CDATA[ 
									private function setParentValue():void{
										outerDocument.PhotoProgressBar.push(pbphoto);
									}	
								]]>  
							</fx:Script>
							<s:HGroup  fontSize="10" fontWeight="normal"> 
								<mx:ProgressBar id="pbphoto" verticalCenter="true" width="100%" paddingLeft="5" paddingRight="5"
									maximum="100" minimum="0" labelPlacement="center"
									label="%3%%" textAlign="left"
									source="{data.fileRefrence}" creationComplete="setParentValue();" />
							</s:HGroup>
						</s:GridItemRenderer>
					</fx:Component>
				</s:itemRenderer>
			</s:GridColumn>
		</s:ArrayList>
	</s:columns>
</s:DataGrid>


然后是清空ArrayCollection的同时,设置ProgressBar的进度值。这里使用ProgressBar的setProgress方法有个问题就是当ProgressBar的Mode为event(自动)的时候,ProgressBar对象是不接受手动修改它的进度值得,所以这里必须先把Mode改为manual(手动),然后调用setProgress(0,100),最后再把Mode改回event就ok了。

for(var i:int = 0;i < PhotoProgressBar.length;i++)
{
	this.PhotoProgressBar[i].mode = "manual";
	this.PhotoProgressBar[i].setProgress(0,100);
	this.PhotoProgressBar[i].mode = "event";
}

这里还有另一种处理方案:http://www.myexception.cn/flex/1244114.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值