以下示意代码回答上述俩个问题。
<s:DataGrid id="uploadingFiles" dataProvider="{_listData}" editable="false" width="860" height="500" left="20" right="20" top="20" horizontalScrollPolicy="off" > <s:columns> <s:ArrayList> <s:GridColumn dataField='bookName' headerText='文件名称' width="490" sortable="false" itemRenderer="production.some.FileUploadBookNameItemRender"/> <s:GridColumn dataField='stage' headerText='状态' width="73" sortable="false"/> <s:GridColumn dataField='totalSize' headerText='进度' width="88" sortable="false" itemRenderer="production.some.FileUploadProgressItemRender"/> <s:GridColumn dataField='fileSize' headerText='大小' width="65" sortable="false" itemRenderer="production.some.FileUploadSizeItemRender"/> <s:GridColumn dataField='speed' headerText='速度' width="65" sortable="false"/> <s:GridColumn dataField='timeLeft' headerText='剩余时间' width="80" sortable="false"/> </s:ArrayList> </s:columns> </s:DataGrid>itemrender定制数据如何显示,itemrenderFunction可以根据数据的差异更换itemerrender。
具体的需求是在DataGrid中用到了设置ProgressBar,数据源已经绑定,但更新数据源后发现数据无法在界面显示,调试过程中还发现鼠标经过该行,进度条就会变化。尝试了在数据变化后调用DataGrid自身的方法,诸如:validateNow() 、validateDisplayList()等统统不生效。经过上网查询,发现可行的方式如下:
datagrid.dataProvider.dispatchEvent( new CollectionEvent(CollectionEvent.COLLECTION_CHANGE));具体的网页在这里