为什么AdvancedDataGrid渲染所有列而不是可见的列?

问题描述:

所以我知道DataGrid的假定行为是只呈现可见的单元格。但是在我的应用程序中,我发现数据网格呈现每个可见行的所有列。任何想法为什么会发生?为什么AdvancedDataGrid渲染所有列而不是可见的列?

每一列都有基于该类型自身的定义ItemRenderer:

public class CustomColumn extends AdvancedDataGridColumn { 
    public function CustomColumn() { 
     switch (this.type) { 
      case A: this.itemRenderer = RendererA; 
      break; 
      case B: this.itemRenderer = RendererB; 
      break; 
      // more similar code 
    } 
} 

谢谢!

编辑:网格属性。 CustomAdvancedDataGrid扩展了AdvancedDataGrid。

<view:CustomAdvancedDataGrid 
    id="grid" 
    wordWrap="true" 
    alternatingItemColors="[#ffffff,#ffffff]" 
    horizontalGridLines="true" 
    width="100%" 
    height="100%" 

    fontSize="11" 
    paddingTop="4" 
    paddingBottom="6" 
    lockedColumnCount="1" 
    verticalLockedSeparatorSkin="{greyLine}" 

    styleName="gridRowSelection" 
    headerStyleName="gridHeaderGreen" 

    dataProvider="{resetGrid(gridModel.hd)}" 
    updateComplete="gridUpdateCompleteHandler(event)" 

    displayDisclosureIcon="true" 
    iconFunction="iconFunction" 
    useRollOver="false" 

    sortableColumns="false" 
    editable="{!this.gridModel.isReadOnly() &amp;&amp; !this.model.budgetGridModel.tagsMenuShowing}" 

    draggableColumns="false" 
    dragEnabled="{!this.gridModel.isReadOnly() &amp;&amp; (this.gridModel.currColumnDef == null)}" 
    dropEnabled="true" 
    dragMoveEnabled="true" 
    dragStart="dragPreventHandler(event)" 
    dragEnter="dragPreventHandler(event)" 
    dragDrop="dragDropHandler(event)" 
    dragOver="dragOverHandler(event)" 
    dragComplete="dragCompleteHandler(event)" 

    itemClick="itemClickHandler(event)" 
    itemEditBegin="itemEditBeginHandler(event)" 
    itemEditBeginning="itemEditBeginningHandler(event)" 
    itemEditEnd="itemEditEndHandler(event)" 

    scroll="scrollHandler(event)" 
    horizontalScrollPolicy="on" 
    verticalScrollPolicy="on" 
    liveScrolling="false" 

    focusThickness="0" 
    variableRowHeight="false" 
    selectionColor="#f8fac8" 
    disclosureClosedIcon="@Embed(source='../asf/icon_plus_expand.png')" 
    disclosureOpenIcon="@Embed(source='../asf/icon_minus_minimize.png')" 
    headerRenderer="ADGHeaderRenderer" 
    getHighLightedColorFunction="getHighLightedColorFunction" 
    columnStretch="columnStretchHandler(event)" 

    rowColorFunction="rowColourFunction" 
    columns="{gridModel.columnHier}" 

    displayItemsExpanded="true" 
    itemOpen="this.itemOpened(event)" 
    itemClose="this.itemClosed(event)"/> 
+0

它在某处指定这是网格的行为吗?我预计网格会为可见行创建渲染器,并且它不会在意某个特定列是否可见。 – 2012-07-27 05:27:42

AdvancedDataGrid有两个属性设置列:groupedColumns和列。 Set groupedColumns将实例化所有列的渲染器(水平滚动将平滑运行,但网格需要更多时间进行渲染)。 设置列 - 只有可见区域的渲染器。

+0

我刚试过,它不起作用。我已经更新了网格的其他属性的问题。谢谢。 – mpang 2012-07-26 20:40:52