ユーザーが選択できるオプションをリストするメイン データグリッドの右側にあるタブ付きナビゲーター (タブごとに 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::
何か案は?これは紛らわしいと思われるかもしれません..必要に応じてさらに詳しく説明します.