Flex:在DataGrid中垂直滚动时出错

时间:2010-06-10 07:43:22

标签: flex datagrid

我有这个代码

<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)都会被洗牌或其他内容。

请帮我这个..谢谢

2 个答案:

答案 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的数据都会发生变化。