Как добавить Column в Adobe flex mx: DataGrid в mxml и / или actionsctpt? - PullRequest
2 голосов
/ 30 января 2010

У меня простой mxml код

<mx:DataGrid id="DGG"
             editable="true">
    <mx:dataProvider>
        <mx:Object scheduledDate="4/1/2006"/>
    </mx:dataProvider>
</mx:DataGrid>
<mx:Button id="SetBut"
           label="Set Array as Data Provider"
           click="SetDP(); AddBut.visible = true;"
           x="100.5"
           y="164"
           width="211"/>
<mx:Button id="AddBut"
           label="Add a column!"
           click="AddCol();"
           x="100.5"
           y="194"
           width="211"
           visible="false"/>
<mx:Script>
    <![CDATA[
        import mx.controls.dataGridClasses.DataGridColumn;
        import mx.collections.ArrayCollection;

        [Bindable]
        public var MyAC:ArrayCollection=new ArrayCollection([{scheduledDate: "4/1/2006", homeTeam: "Chester Bucks"}]);

        public function SetDP():void
        {
            DGG.dataProvider=MyAC
        }

        public function AddCol():void
        {
            MyAC.addItem({scheduledDate: "4/5/2007", homeTeam: "Long Valley Hitters", Umpire: "Amanda Hugenkis"});
            DGG.columns.push(new DataGridColumn("Umpire"));
        }
    ]]>
</mx:Script>

Я хочу добавить строки в таблицу данных, как это сделать?

Как добавить Column в Adobe flex mx: DataGrid в mxml и / или actionsctpt?

(Вы можете поместить этот код в приложение Flash или AIR - он будет компилироваться без ошибок, но не будет добавлять столбцы = ()

Ответы [ 3 ]

3 голосов
/ 30 января 2010

Из того, что я могу собрать, вы пытаетесь динамически добавить несколько столбцов в свою таблицу данных:

dataGrid.columns.push(new DataGridColumn("dataField"));
2 голосов
/ 30 января 2010

Лучший способ добавить строки - использовать связываемый dataProvider, и я предпочитаю класс ArrayCollection.

[Bindable] public var MyAC:ArrayCollection = new ArrayCollection([
  {scheduledDate:"4/1/2006", homeTeam:"Chester Bucks",awayTeam:"Long Valley Hitters", field:"Dawn Field", umpire:"Phil McKraken"}
]);

Затем в вашей таблице данных вместо определения DP через MXML добавьте его следующим образом:

<mx:DataGrid id="dataGrid" editable="true" dataprovider="{MyAC}"....>

Затем вы можете добавлять строки, добавляя элементы в переменную MyAC с помощью скрипта действия:

MyAC.AddItem({scheduledDate:"4/5/2006", homeTeam:"Long Valley Hitters",awayTeam:"Chester Bucks", field:"Sunset Field", Umpire:"Amanda Hugenkis"})

Поскольку он связан, он автоматически появится в сетке данных.

Предположим, вы определили свои столбцы в MXML, так как в своем примере вы можете добавить столбец «Судья» следующим образом:

dataGrid.columns.push(new DataGridColumn("Umpire"));

Благодарим ClownBaby за столбец с добавлением AS, который уже был опубликован.

РЕДАКТИРОВАНИЕ 01.02.2010: Пример полного кода

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" >
<mx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;

        [Bindable] public var MyAC:ArrayCollection = new ArrayCollection([
          {scheduledDate:"4/1/2006", homeTeam:"Chester Bucks",awayTeam:"Long Valley Hitters", field:"Dawn Field", umpire:"Phil McKraken"}
        ]);

        public function addRow():void{
            MyAC.addItem({scheduledDate:"4/5/2006", homeTeam:"Long Valley Hitters",awayTeam:"Chester Bucks", field:"Sunset Field", Umpire:"Amanda Hugenkis"})
        }

        public function addCol():void{
            var dgc:DataGridColumn = new DataGridColumn("Umpire");
                var cols:Array = dataGrid.columns;
                cols.push(dgc);
                dataGrid.columns = cols;
        }
    ]]>
</mx:Script>

<mx:DataGrid id="dataGrid" editable="true" dataProvider="{MyAC}">
    <mx:columns>
        <mx:DataGridColumn dataField="scheduledDate" />
        <mx:DataGridColumn dataField="homeTeam" />
        <mx:DataGridColumn dataField="awayTeam" />
        <mx:DataGridColumn dataField="field" />
    </mx:columns>
</mx:DataGrid>
    <mx:Button x="10" y="150" label="Add Row" click="addRow();"/>
    <mx:Button x="202" y="150" label="Add Col" click="addCol();"/>

</mx:Application>
0 голосов
/ 11 марта 2011

В следующем примере добавляем 10 столбцов в сетку данных "myGrid"

private var columns:Array;

        for (var i:int=0; i<10;i++){
          var dgc:DataGridColumn = new DataGridColumn("column name");
          dgc.headerText="column header";

          columns.push(dgc);
        }

        myGrid.columns=columns;
...