1

ユーザーが選択できるオプションをリストするメイン データグリッドの右側にあるタブ付きナビゲーター (タブごとに 1 つ) に 2 つのカスタムの高度なデータグリッドがあります。ユーザーがメイン データグリッドの項目をクリックすると、タブ付きナビゲーターの高度なデータグリッドに適切な情報が読み込まれます。問題は、ユーザーが行った最初の選択を最初にロードした後、ユーザーが 2 番目の選択を行おうとするとフリーズすることです。ただし、ユーザーが 2 番目の選択を行う前にタブを切り替える (タブ 1 と 2 の両方を表示する) ことを決定した場合は、すべて問題ありません。次の選択が行われる前にタブ1のみが表示されると...クラッシュ..

advanceddatagrid のソースはここにあります: http://code.google.com/p/advanceddatagrid/source/browse/trunk/mergeableDataGrid/src/AdvancedDataGrid/AdvancedDataGrid.mxml?r=3

以下のスニペットに見られるように、グリッドが xml をループする方法を変更しました。

        public function createGrid(xml:XML):void
        {
            // create columns 
            var columns:ArrayList = new ArrayList();  

            var rows:ArrayCollection = new ArrayCollection(); 

            for each (var column:XML in xml.Columns.Column)
            {
                var col:AdvancedDataGridColumn = new AdvancedDataGridColumn();

                col.dataField = column.DataField.valueOf().toString(); 
                col.headerText = column.Name.valueOf().toString();
                col.dataTipField = column.Tooltip.valueOf().toString();
                col.showDataTips = true;

                columns.addItem(col);
            }

            this.dataProvider = xml.Rows.Row;

            this.groupedColumns = columns.toArray();
        }

これが私のタブ付きナビゲーターコードです

    <mx:TabNavigator id="tabNavigator"  width="100%" height="100%">         
        <s:VGroup width="100%"
                 label="Financial">
            <s:HGroup height="100%"
                      width="100%"
                      gap="0">
                <dataGrid:AdvancedDataGrid id="fundingGrid"
                                           itemEditBeginning="fundingGrid_itemEditBeginningHandler(event)"
                                           itemEditEnd="fundingGrid_itemEditEndHandler(event)"
                                           width="100%"
                                           height="100%"/>          

            </s:HGroup>
        </s:VGroup>
        <s:VGroup width="100%"
                 label="Quarterly Breakdown">
            <s:HGroup height="100%"
                     width="100%">
                <dataGrid:AdvancedDataGrid id="quarterlyBreakdownGrid"
                                           width="85%"
                                           height="100%"
                                           itemEditBeginning="quarterlyBreakdownGrid_itemEditBeginningHandler(event)"
                                           itemEditEnd="quarterlyBreakdownGrid_itemEditEndHandler(event)"/>     
                <s:Button id="btnSaveQuarterlyBreakdown"
                          label="Submit"
                          toolTip="Click to save program's quarterly funding."
                          click="btnSaveQuarterlyBreakdown_clickHandler(event)"/>

            </s:HGroup>
        </s:VGroup>
    </mx:TabNavigator>

ユーザーがグリッドから項目を選択すると、高度なデータグリッドが列名と行とともに xml で送信されます。この createGrid メソッドは最初のコード スニペットにあります。

this.fundingGrid.createGrid(fundingXML);
this.quarterlyBreakdownGrid.createGrid(bdXML);

エラーメッセージ

エラー: エラー #1023: スタック オーバーフローが発生しました。mx.styles::StyleManager$/getStyleManager() mx.styles::StyleProtoChain$/getStyleManager() mx.styles::StyleProtoChain$/getTypeHierarchy() mx.styles::StyleProtoChain$/matchesCSSType() mx .core::UIComponent/matchesCSSType() の mx.styles::CSSSelector/matchesStyleClient() の mx.styles::CSSStyleDeclaration/matchesStyleClient() の mx.styles::StyleProtoChain$/matchStyleDeclarations() の mx.styles::StyleProtoChain mx.core::UIComponent/http で mx.styles::StyleProtoChain$/getMatchingStyleDeclarations() で $/getClassStyleDeclarations()::UIComponent/getClassStyleDeclarations() で mx.styles::StyleProtoChain$/initProtoChain() で: //www.adobe.com/2006/flex/mx/internal::initProtoChain() at mx.core::

何か案は?これは紛らわしいと思われるかもしれません..必要に応じてさらに詳しく説明します.

4

0 に答える 0