Passing Datagrid Items

I was trying to display html text where about 10 rows were concatenated together with the Datagrigd column. I can display it, but not the cell size. I am trying to embed this in HBox and then put it in a cell. But I can't resize the cell as I can see the HBox getting compressed even though there is enough space in the cell. Can anyone help me in setting this HBox to the cell size of the Datagrid.

I tried to use UpdateDisplayList () but it got into an infinite loop and the screen freezes. Please find the code below.

Below is the iam class that calls the renderer. If someone please help me.

package components .myReports {import mx.collections.ArrayCollection; import mx.containers.HBox; import mx.containers.VBox; import mx.controls.DataGrid; import mx.controls.dataGridClasses.DataGridColumn; import mx.core.ClassFactory; import renderers.HtmlTextRenderer;

public class MyReportsComponent extends VBox
{
    [Bindable]

      

// public var metersList: ArrayCollection = model.Lookups.getInstance (). meterList;

    private var _reportsList:ArrayCollection;

    private var myReports:ArrayCollection = new ArrayCollection([
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:"" },
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""},
            {name:"Christina Coenraets",description:"myReports1", dateRefreshed:"05-18-2009", dateCreated:"05-18-2009" , scheduledTime: "05-18-2009",operations:""}

        ]);



    public function MyReportsComponent()
    {
        //TODO: implement function
        super();            

    }

    public function set reportsList(arr:ArrayCollection):void{

        _reportsList = arr

    }




  override protected function createChildren():void  {

      var dataGrid:DataGrid ;
      var dataGridColumn:DataGridColumn;
      var mainContainer:HBox;
      this.removeAllChildren();

      mainContainer = new HBox();
      mainContainer.width = this.parent.width;
      mainContainer.minHeight = 1000;
      mainContainer.horizontalScrollPolicy = "off";
      mainContainer.verticalScrollPolicy = "of";
      mainContainer.percentHeight = 100;
      mainContainer.percentWidth = 75;

      dataGrid =  new DataGrid();

      var row:Array=new Array("name","description","dateRefreshed","dateCreated","scheduledTime","operations");             
      var colName:String; 
      var gridcolumns:Array=new Array(); 
      for(var i:int=0;i<row.length;i++) 
           { 

             dataGridColumn=new DataGridColumn(); 
             dataGridColumn.dataField=row[i].toString(); 
             trace(row[i].toString());
             if(row[i].toString()== "operations")
                {                     
                 dataGridColumn.itemRenderer = new ClassFactory(HtmlTextRenderer);                          
                 dataGridColumn.width = 200;
                }else { 
                 dataGridColumn.width = 70;
                }
             dataGridColumn.resizable=true;  

             gridcolumns.push(dataGridColumn); 
        } 

      dataGrid.columns = gridcolumns;         
      dataGrid.width = 700;
      dataGrid.height= 400;
      dataGrid.dataProvider = myReports;
      mainContainer.addChild(dataGrid);
      this.addChild(mainContainer);
      this.validateNow(); 

   }

}

      

}

Renderer -----

rendering packages {import mx.containers.HBox; import mx.controls.TextArea;

public class HtmlTextRenderer extends HBox
{
    private var text:Array=new Array("Edit","Delete","Run","EMail","RetrieveFile","Public","Private","SharedReport","ScheduledReport");
    private var html:String =  null;
    public var operations:TextArea; 

    public function HtmlTextRenderer()
    {
        //TODO: implement function
        super();
    }
    override protected function createChildren():void 
    {
        super.createChildren();         

        for(var i:int = 0 ;i < text.length ;i++)
        {                   
          html+=targetHTML(text[i].toString());

        }   

        operations = new TextArea();
        operations.htmlText =  html; 
        this.percentWidth = 100;
        this.percentHeight = 100;
        this.addChild(operations);         
    }

    private function targetHTML(name:String):String
    {           
        return "<a href='event:" + name +  "'>" + name + "</a>";
    }

    /* override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{

        super.updateDisplayList(unscaledWidth,unscaledHeight);


    } */


    private function updateSize()
    {
        var w:int = this.measuredWidth +100;
        trace("The width of the Text is "+this.measuredWidth);
        this.width = w;
        this.parent.width = w;

    }  


}     

      

}

0


a source to share


1 answer


Have you tried just having the element renderer just textArea?



0


a source







All Articles