2009-05-20 4 views
0

Ich habe versucht, einen HTML-Text von einigen, wo etwa 10 Strings zusammen mit mit in einer Datagrigd-Spalte verkettet. Ich kann es aber nicht auf die Größe der Zelle übertragen. Ich versuche, dies in eine HBox einzubetten und dann in die Zelle zu legen. Aber ich bin nicht in der Lage, die Größe der Zelle zu ändern, da ich sehe, dass die HBox schrumpft, obwohl in der Zelle genug Platz ist. Kann mir jemand helfen, diese HBox an die Größe der Datagrid-Zelle anzupassen?Datagrid item rendering

Ich habe versucht mit UpdateDisplayList(), aber es wird in Endlosschleife und der Bildschirm wird einfrieren. Bitte finden Sie den Code unten.

Unten ist die Klasse Iam einen Aufruf an den Renderer. Kann jemand bitte helfen Sie mir aus.

Paket 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; importieren renderers.HtmlTextRenderer;

public class MyReportsComponent extends VBox 
{ 
    [Bindable] 

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

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 -----

Paket Renderer { 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; 

    } 


}  

}

Antwort

0

Haben Sie versucht, mit nur der Elementrenderers einfach ein Textfeld sein?