Динамическое создание таблицы с использованием AdvancedDatagrid - PullRequest
1 голос
/ 27 февраля 2012

Количество строк и столбцов таблицы берется у пользователя для создания таблицы в одном окне заголовка.После ввода я открываю еще одно окно, состоящее из таблицы (AdvancedDatagrid), что происходит, если сгенерированная таблица превышает ширину и высоту окна, таблица выходит из окна.Что нужно сделать, чтобы сохранить таблицу внутри окна TitleWindow.

    <?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         title="Table Details"
         initialize="tableDetailsWindow_initializeHandler(event)"
         chromeColor="#5C809B" color="#D8E0E5"
         creationComplete="tableDetailsWindow_creationCompleteHandler(event)" 
         width="506">
    <fx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.controls.Alert;
            import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
            import mx.core.FlexGlobals;
            import mx.events.CloseEvent;
            import mx.events.FlexEvent;
            import mx.managers.PopUpManager;

            import spark.components.TextInput;
            import spark.components.TileGroup;

            [Bindable]
            public var columnNameGroup :TileGroup;

            [Bindable]
            public var columnCount:Number;

            [Bindable]
            public var rowCount:Number;

            var rowCollection : ArrayCollection = new ArrayCollection();
            var columnNames :ArrayCollection = new ArrayCollection();

                        protected function tableDetailsWindow_initializeHandler(event:FlexEvent):void
            {
                dataGrid.rowCount= Number(FlexGlobals.topLevelApplication.insertTableConfigWindow.rowCount.text)+1;
            }


            protected function tableDetailsWindow_creationCompleteHandler(event:FlexEvent):void
            {
                columnNameGroup = FlexGlobals.topLevelApplication.insertTableConfigWindow.tileGroupOfColsInfo;
                columnCount = Number(FlexGlobals.topLevelApplication.insertTableConfigWindow.columnCount.text);
                rowCount = Number(FlexGlobals.topLevelApplication.insertTableConfigWindow.rowCount.text);

                                //Creation of Column Name collection 
                for(var i:Number= 0; i< columnCount; i++ ){
                    var textInputId :String  ="textInput"+ (i+1);
                    var textInput :TextInput = columnNameGroup.getChildByName(textInputId) as TextInput;
                    columnNames.addItem(textInput.text);
                }

                                //Creation of Rows collection 
                for(var j:Number= 0; j< rowCount; j++ ){
                    var obj:Object = new Object();
                    for each(var colName : * in columnNames){
                        obj.colName ="";
                    }
                    rowCollection.addItem(obj);
                }

                dataGrid.dataProvider = rowCollection;

                var columns:Array = dataGrid.columns;

                for(var k:Number= 0; k< columnNames.length; k++ ){

                    var adgColumn:AdvancedDataGridColumn = new AdvancedDataGridColumn();
                    adgColumn.dataField = columnNames.getItemAt(k) as String;
                    adgColumn.editable = true;

                    columns.push(adgColumn);
                }
                dataGrid.columns = columns;
            }


        ]]>
    </fx:Script>

    <mx:AdvancedDataGrid id="dataGrid"  
    editable="true" verticalScrollPolicy="off"
    sortableColumns="false"
    x="0" y="0" />



</s:TitleWindow>

1 Ответ

0 голосов
/ 27 февраля 2012

Вы пытались установить ширину вашей AdvancedDataGrid?

<mx:AdvancedDataGrid id="dataGrid"  
    width="506" <=== Set the width here
    editable="true" verticalScrollPolicy="off"
    sortableColumns="false"
    x="0" y="0" />

Кроме того, вы можете установить ширину динамически, но затем вам нужно прослушать событие resize вашего окна.

...