我有这个代码
<mx:DataGrid id="tempListDG" itemDoubleClick="doubleClickHandler(event)" width="100%" height="100%" rowHeight="110"
draggableColumns="false" sortableColumns="false" allowMultipleSelection="false">
<mx:columns>
<mx:DataGridColumn id="chkSel" headerText=" " width="15" sortable="false">
<mx:itemRenderer>
<mx:Component>
<mx:HBox horizontalScrollPolicy="off" verticalScrollPolicy="off" paddingLeft="3">
<mx:Script>
<![CDATA[
]]>
</mx:Script>
<mx:CheckBox name="chkSel" selected="false" />
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn id="sum" dataField="@summary" headerText="Summary Description" width="280" >
<mx:itemRenderer>
<mx:Component>
<mx:HBox name="thumbs" creationComplete="setThumbnailImage(event)" verticalAlign="top" verticalScrollPolicy="off">
<mx:Script>
<![CDATA[
import mx.controls.Text;
import com.azaaza.containers.HBox;
import com.azaaza.controls.Image;
import com.hwakin.tavi.model.ModelLocator;
import mx.controls.DataGrid;
private function setThumbnailImage(e:Event):void{
var dg:DataGrid = DataGrid(e.target.parent.parent);
var dCounter:int = TemplateOpenPanel(dg.parent.parent).dCount;
if (dCounter+1 > XMLList(dg.dataProvider).length()){
dg.validateDisplayList();
return;
}
img.load(ModelLocator.getInstance().StringToBitmap(XMLList(dg.dataProvider)[dCounter].@thumbStr));
img.width = 80;
img.height = 110;
txt.htmlText = XMLList(dg.dataProvider)[dCounter].@summary;
txt.maxHeight = 110;
dCounter++;
TemplateOpenPanel(dg.parent.parent).dCount = dCounter;
}
]]>
</mx:Script>
<mx:Image id="img">
</mx:Image>
<mx:Text id="txt">
</mx:Text>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn dataField="@dateCreated" headerText="Date Created" width="100" />
<mx:DataGridColumn dataField="@dateModified" headerText="Date Modified" width="100"/>
<mx:DataGridColumn dataField="@guid" headerText="guid" visible="false"/>
<mx:DataGridColumn dataField="@fileName" headerText="File Name" visible="false"/>
<mx:DataGridColumn dataField="@tempXml" headerText="tempXml" visible="false"/>
</mx:columns>
</mx:DataGrid>
名为“sum”的datagridcolumn id创建由我加载的XML给出的图像和文本 但是当我使用datagrid的滚动时我得到了错误。并且图像会被取消,并且所有数据(如dateCreated和dateModified)都会被洗牌或其他内容。
请帮我这个..谢谢
答案 0 :(得分:2)
如果您仍在寻找答案,请将此添加到您的代码中。
1)
protected function dgtempListDG_scrollHandler(event:ScrollEvent):void
{
// TODO Auto-generated method stub
tempListDG.invalidateDisplayList();
}
2)
scroll = "dgtempListDG_scrollHandler(event)"
在mx:datagrid
。
答案 1 :(得分:0)
请记住,项目渲染器已被回收并重复使用,因此您不应使用creationCompelte事件(如果只有5个项目渲染器可见,则只创建7个然后重复使用它们,但它们只创建一次,因此创建完成只会触发一次)
我喜欢使用dataChange事件,它们在创建时工作,每次itemRenderer的数据都会发生变化。