Datgrid and Item Renderer scrollling problem

Hello,
I have a Datgrid containign item rendrer as follows :
<mx:DataGrid  width="800" id="gridSecondaire" styleName="dataGridStyle" verticalScrollPolicy="off" headerHeight="30" >
          <mx:columns>
               <mx:DataGridColumn rendererIsEditor="true" 
                                          editorDataField="result"
                                          itemRenderer="com.cdf.intra_cmmi.view.advancedTree.BodyDetailDocumentRenderer" />
          </mx:columns>
     </mx:DataGrid>
The problem is I when i scroll the datagrid the  rows do not stay in the same position how to solve this please ?

Here the item Renderer
===================ITEM RENDRER==========================
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" height="28" width="388" creationComplete="init(event)"  click="clickTexte(event);">
    <mx:Script>
    <![CDATA[
        [Embed(source="images/icon/tree_defaultLeafIcon.png")]
        public static const tree_defaultLeafIcon:Class;
        [Embed(source="images/icon/tree_pptLeafIcon.png")]
        public static const tree_pptLeafIcon:Class;
        [Embed(source="images/icon/tree_xlsLeafIcon.png")]
        public static const tree_xlsLeafIcon:Class;
        [Embed(source="images/icon/anglais.png")]
        private var anglaisIcon:Class;
        import com.sqli.intra_cmmi.constants.ConstantAssets;
        private function clickTexte(event:MouseEvent):void {
                var fileReference:FileReference = new FileReference();
                fileReference.download(new URLRequest(data.chemin_document));
        private function init(event:Event):void {
            import com.sqli.intra_cmmi.vo.DocumentVO;
            import mx.controls.Alert;
            import mx.collections.ArrayCollection;
                var nom_document:String =data.nom_document as String;
                var description_document:String = data.description_document as String;
                var language_document:String =data.language_document as String;
                var ext:String = data.ext as String;
                var type:String = data.type_document as String;
                var chemin_document:String = data.chemin_document as String;
                switch (type)
                        case "Modèle":
                            imageTypeDoc.source = ConstantAssets.modele;
                            break;
                        case "Guide":
                            imageTypeDoc.source = ConstantAssets.guide;
                            break;
                        case "Document":
                            imageTypeDoc.source = ConstantAssets.document;
                            break;
                        case "Outils":
                            imageTypeDoc.source = ConstantAssets.outils;
                            break;
                        case "Check-liste":
                            imageTypeDoc.source = ConstantAssets.checklist;
                            break;
                        default:
                            imageTypeDoc.source = ConstantAssets.document;
                nom.text=nom_document+' ('+ext+')';
                if(language_document!='1036'){
                    imageAnglais.source=anglaisIcon;
                if(description_document!=""){
                    imageDescription.source=anglaisIcon;
    ]]>
</mx:Script>
    <mx:Image id="imageTypeDoc" x="5" y="5" height="15" width="15"   />
    <mx:Text x="23" y="3" width="326" id="nom"/>
    <mx:Image x="351" y="5" height="15" width="15" id="imageAnglais"/>
    <mx:Image x="370" y="5" height="15" width="15" id="imageDescription"/>
</mx:Canvas>
======================Main.MXLM  (Blue Code part) ===============================
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
    width="830"  creationComplete="init()">
    <mx:Script>
        <![CDATA[
            import com.sqli.intra_cmmi.services.MainService;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import com.sqli.intra_cmmi.controller.ProduitController;
            import com.sqli.intra_cmmi.services.VerticalMenuService;
            //import com.sqli.intra_cmmi.services.MainService;
            import com.sqli.intra_cmmi.vo.ProduitVO;
            import mx.controls.Alert;
            public var objectList : Array = new Array();
            public function init():void
                myProc.listeDomaineProcessus();
                if(VerticalMenuService.getInstance().produitVerticalMenu.getChildren().length > 0)
                    // On positionne l'accordion des produits sous l'accordion commun
                    VerticalMenuService.getInstance().produitVerticalMenu.y = VerticalMenuService.getInstance().verticalMenu.height - 49;
                    MainService.getInstance().lefter.addChild(VerticalMenuService.getInstance().produitVertic alMenu);
                var id:String;
                id=ProduitController.getInstance().currentProduitId;
                if(id!=null)
                    myProd.getProduitDescription(id);
                    myProd.getDocumentPrincipauxByProduit(id,1);
                    myProd.getDocumentSecondaireByProduit(id,0);
                    myProd.getRolesProduit(id);
                    myProd.getAjustementProduitByID(id);
            private function getDataListener_listeDomaineProcessus(event:ResultEvent):void
                //refPhase= new ArrayCollection();
                this.objectList = event.result as Array;
                // Peupler l'accordion
                ProduitController.getInstance().populateVerticalMenu(this.objectList);
            private function getDataListener_getDocumentSecondaireByProduit(event:ResultEvent):void
                var obje:Array = event.result as Array;
                if(obje.length>0)
                    gridSecondaire.dataProvider = event.result as Array;
                    gridSecondaire.rowHeight = 33;                   
                    gridSecondaire.height = obje.length*33+30;
                    var maximumHeight : int = 228;
                    if ( gridSecondaire.height > maximumHeight){
                      gridSecondaire.verticalScrollPolicy = "on";
                      gridSecondaire.height = maximumHeight;                   
                else
                    gridSecondaire.visible=false;
                    gridSecondaire.includeInLayout=false;
            override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
                super.updateDisplayList(unscaledWidth, unscaledHeight);
                // Peupler l'accordion (rafraichissement lors du passage d'une rubrique à une autre)
                ProduitController.getInstance().populateVerticalMenu(this.objectList);
            private function getDataListener_getProduitDescription(event:ResultEvent):void{
                    description.title=ProduitVO(event.result).nom_produit;
                    idPanelDescription.htmlText=ProduitVO(event.result).description_produit;
            private function faultListener(event:FaultEvent):void {
                    Alert.show(event.fault.message, "Error");
        ]]>
    </mx:Script>
    <mx:VBox verticalGap="20"  horizontalCenter="0" top="10" bottom="10">       
    <mx:Panel width="800" height="121" id="description"  styleName="stylePanel"  >
        <mx:Label paddingLeft="5"  paddingRight="5" paddingTop="40"  width="100%" id="idPanelDescription"/>
    </mx:Panel>
   <mx:DataGrid  width="800" id="gridSecondaire" styleName="dataGridStyle" verticalScrollPolicy="off" headerHeight="30"  >
        <mx:columns>
            <mx:DataGridColumn rendererIsEditor="true"  editorDataField="result"
             itemRenderer="com.sqli.intra_cmmi.view.advancedTree.BodyDetailDocumentRenderer"
              headerText="Documents secondaires"/>
            <mx:DataGridColumn rendererIsEditor="true"  editorDataField="result" dataField="livrable_document" headerText="Livrables" width="100"/>    
        </mx:columns>
    </mx:DataGrid>
    </mx:VBox>
    <mx:RemoteObject id="myProc" destination="zend" source="ProcessusService" showBusyCursor="true" fault="faultListener(event)">
        <mx:method name="listeDomaineProcessus" result="getDataListener_listeDomaineProcessus(event);" />
    </mx:RemoteObject>
    <mx:RemoteObject id="myProd" destination="zend" source="ProduitsService" showBusyCursor="true" fault="faultListener(event)">
        <mx:method name="getRolesProduit" result="getDataListener_getRolesProduit(event);" />
        <mx:method name="getDocumentPrincipauxByProduit" result="getDataListener_getDocumentPrincipauxByProduit(event);" />
        <mx:method name="getDocumentSecondaireByProduit" result="getDataListener_getDocumentSecondaireByProduit(event);" />
        <mx:method name="getAjustementProduitByID" result="getDataListener_getAjustementProduit(event);" />
        <mx:method name="getProduitDescription" result="getDataListener_getProduitDescription(event);" />
    </mx:RemoteObject>
</mx:Canvas>

Similar Messages

  • Datagrid Drop Down Item renderer Scroll Problem

    Hi,
    I am having a problem with an drop down item renderer on a Datagrid.  When ever the datagrid is displayed and the cell is clicked on i want this to display a drop down list of objects.  I can get the drop down to appear with the list of objects.  H
     owever the scrollbar does not work on this item to allow the user to scroll through all the objects.  If you use the mouse wheel you can scroll down through them all but not when you try and click on the scroll bar to drag down.  Below is the code used.  Any advice why this might be happening?? 
    <mx:DataGridColumn headerText="Widget"
    dataField="WidgetName"
    editable="true"  headerWordWrap="false" textAlign="center" width="100"
    editorDataField="Widget">
    <mx:itemEditor>
    <fx:Component>
    <s:MXDataGridItemRenderer focusEnabled="true" height="22" >
    <fx:Script>
    <![CDATA[               
    import mx.events.FlexEvent;
    import spark.events.IndexChangeEvent;
    private var selectedWidget:Widget = null;
    public function get ccyPair():String {
    return  ddlCcyPairs.selectedItem.Widget;
    override protected function commitProperties():void {
    super.commitProperties();                
    trace("Commit .......");
    protected function ddlCcyPairs_changeHandler(event:IndexChangeEvent):void {
    for each(var ccyP:CurrencyPair in ddlCcyPairs.dataProvider) {
    if (ccyP.ccyPair == ddlCcyPairs.selectedItem.ccyPair) {
    selectedWidget = ccyP;
    ddlCcyPairs.selectedItem = selectedWidget;
    protected function ddlCcyPairs_creationCompleteHandler(event:FlexEvent):void {                 
    for each(var ccyP:CurrencyPair in ddlCcyPairs.dataProvider) {
    if (ccyP.ccyPair ==  data.ccyPairName) {
    selectedWidget = ccyP;
    ddlCcyPairs.selectedItem = selectedWidget;
    ]]>
    </fx:Script>
    <s:DropDownList id="ddlWidgets" width="100%"
    dataProvider="{parentApplication.Widgets}"
    labelField="name"              
    selectedItem="selectedWidget"
    creationComplete="ddlWidgets_creationCompleteHandler(event)"
    change="ddlWidgets_changeHandler(event)"/>
    </s:MXDataGridItemRenderer>
    </fx:Component>
    </mx:itemEditor>
    </mx:DataGridColumn>

    Hi, Post a test code.... It will be a lot easier to help you Mich

  • Same condition type on header and item level = printing problem

    Hi
    I have a customer using some condition types on both item level and header level in quotations, orders, invoices ...
    In the pricing procedures it is customized (V_T683S-DRUKZ) that the conditions must be printed on header level (that is at the bottom of the documents).
    My job is to make the Smartform to print the documents, and I want it of course to be as close to SAP standard as possible.
    SAP standard will print these conditions on header level even if the conditions are at item level, but my customer wants the conditions created on header level to be printed on header level and conditions created on item level to be printed on item level.
    I'm no pricing expert, so my question is:
    Will it be fair if I tell the customer that using the same condition types on header and item level is bad practices - or at least bad karma?
    Best regards
    Thomas Madsen Nielsen

    Hi Shiva Ram and Madhu
    I have no problem understanding header vs. item conditions, so I really don't see anything in oss note 876617, that is relevant in this case.
    Madhu - I do not agree that everything is fine. My issue is that I want to stick as closely to SAP standard customizing as possible. In SAP standard customizing of a condition type you can use the flag V_T683S-DRUKZ to determine if the condition should be printed on header OR item level - you can not choose both header AND item level.
    I have a SAP standard smartform using two functions modules for reading header and item conditions. RV_PRICE_PRINT_ITEM and RV_PRICE_PRINT_HEAD. These function modules are based on the DRUKZ customizing flag and a condition marked for printing on header level will be supplied by RV_PRICE_PRINT_HEAD even when the condition is on item level.
    My point is: SAP standard customizing does not support printing of same condition on both header and item level. I can of course write tons of code to work around this problem, but that would be bad practices

  • Datagrid and Inline Item renderer problem

    I have a datgrid with two inline item renderers. The dataprovider for my DG is a nested object (objects within objects within objects i.e 3-layered).
    Main Object - 1st Level
                              |
                  2nd Level Object 1
                                    |
                                3rd level object '1' => ('name'=>somename,'id'=>someid)
                                3rd level object '2'
                                3rd level object 'n'
                 2nd Level Object 2
                                    |
                                3rd level object '1' => ('name'=>somename,'id'=>someid)
                                3rd level object '2'
                                3rd level object 'n'
    I use 2 item renderers (one for each datagrid column) which loops thro the 2nd level object1 and 2 respectively (the 2nd level object is a dynamic array of objects, in that the number of objects within keep changing).
    Within the item renderer I loop thro the 2nd level object using a foreach and then display the data. The data is a linkbutton, which when clicked , calls a remote object function to delete the data from the database
    now on the result event of the remote object function call, i call the function to repopulate the DG, so that the updated data is displayed.
    When i click on the linkbutton in the first row, the backend works perfectly fine (the data gets deleted from the database and the refreshed data is sent back), but for some reason, the deleted data suddenly appears in the 2nd row.
    When i delete it from the second row, it appears on the 3rd row (nothing happens in the backend since the data is already deleted).. and so on, till it appears on the last row and then the DG looks exactly the way it shld have looked after the first delete.
    This is just the beginning. The second item renderer also displays a linkbutton, which when clicked, displays that data in the previous column (the one where this data can be deleted). When i click on 1st row, the data gets added in the previous column of the second row .. and so on..
    Basically, my DG is acting really weird. I overrided the set data function in the item renderer to refrsh the data and called its invalidateDisplayList. I also call the Datagrid's invalidateDisplayList function after each refresh.  The behavior remains the same.
    Please help me on this ...

    Hi, Post a test code.... It will be a lot easier to help you Mich

  • Data provider problem in custom item renderer

    I have a complex, custom item renderer for a list. I add
    items that I extracted from an xml to the data provider using the
    IList interface. But when displaying the list, the items are all
    screwed up. Each rendered item has some parts which are initialized
    as different components depending on the values from the xml. This
    initialization is called in the item renderer for the
    creationComplete event.
    The weird thing is that when I output the dataProvider to
    check its values, some of the items have internal uids sometimes
    and sometimes they don't. If I output the dataProvider right after
    I add the items to it, none of them get internal uids. But from the
    initialize method, some of them do and some don't.
    To make things weirder, sometimes, as I scroll up and down
    the list, the dynamic components get all switched up. I'm either
    having a problem with internal uids or with the creation policies
    for lists. Or it's probably some simpler mistake I have yet to see.
    Anyone have any idea where the problem could lie? Any help is
    greatly appreciated.

    Any successful render must:
    1) override the set data property of the component
    Further, best practice is to store any data you need in the
    override set data(), and call invalidateProperties(). Then do the
    actual work in an override commitProperties() function.
    The framework is smart about when to call commitProperties
    efficiently. set data() gets called much more often.
    Tracy

  • Need for a Datagrid with variableRowHeight="true" and custom Item Renderer to display exact rows

    Hi again, developers:
    I'm in a search of a datagrid  with certain characteristics:
         - variableRowHeight = "true"
         - only one column
         - each row must have a custom item renderer with possibly different heights, and a fixed width
         - the datagrid must show always every item in the data provider with no vertical scroll bars, what means that the datagrid height must have always the exact height sum of all the item renderers it is displaying.
         - and no extra empty rows must appear in the last positions of the datagrid
    The last two requirements are something difficult to achieve... for some reason, empty rows appear at the last positions of the datagrid. I post what i've managed to get:
    <mx:Script>
         <![CDATA[
         private function resize():void
                    if (dg.dataProvider)
                        var h:Number = dg.measureHeightOfItems( -1, dg.dataProvider.length);
                        dg.height = h;
         ]]>
    </mx:Script>
    <mx:DataGrid id="dg" width="530" horizontalCenter="0" verticalScrollPolicy="off"
            dataProvider="{dp}"
            wordWrap="true" variableRowHeight="true" showHeaders="false" dataChange="resize()" height="{dg.measureHeightOfItems(-1,dg.dataProvider.length)}" click="Alert.show(dg.rowCount.toString());">
            <mx:columns>
                <mx:DataGridColumn headerText="ID" width="50">
                    <mx:itemRenderer>
                        <mx:Component>
                            <mx:TextArea height="{Math.random()*100}" wordWrap="true" backgroundColor="{Math.random() * 16777216}" paddingTop="0" paddingBottom="0"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>
            </mx:columns>
        </mx:DataGrid>

    Thanks Harui, but it doesn't help. If the border is set it will help, but the very big problem is the empty rows that appear at the end of the datagrid... I can't find a way of measuring correctly the height of the itemRenderers!
    I'll update this thread if I manage to do it.

  • DataGrid Horizontal Scroll Problem when datagrid contains Item renderer

    I have datagrid with horizontal scroll policy enabled. Grid
    contains some item renderer also.One of the item renderer is
    datefield when i select a date from the datefield and say the
    adjacent cell of the grid also contain datefield itemrenderer
    and i am selecting date from that itemrenderer also.When i
    scroll horizontally the date in the itemrender changes to any one
    of the two itemrenderer.Some time it works fine.I am getting the
    issue for combobox itemrender also.Can any one help me to solve
    this issue.

    "happybrowndog" <[email protected]> wrote in
    message
    news:ge11ag$jdo$[email protected]..
    >
    quote:
    Originally posted by:
    ravi_bharathii
    > I have datagrid with horizontal scroll policy enabled.
    Grid contains some
    > item
    > renderer also.One of the item renderer is datefield when
    i select a date
    > from
    > the datefield and say the adjacent cell of the grid also
    contain datefield
    > itemrenderer
    > and i am selecting date from that itemrenderer also.When
    i scroll
    > horizontally
    > the date in the itemrender changes to any one of the two
    itemrenderer.Some
    > time
    > it works fine.I am getting the issue for combobox
    itemrender also.Can any
    > one
    > help me to solve this issue.
    >
    > Ravi, I am having a similar problem. I subclass a
    TextInput as an
    > itemrenderer for a column in a datagrid. My subclassed
    TextInput checks
    > to see
    > the value in the overriden set() method, and depending
    on the value, sets
    > the
    > background color of the TextInput to green. When the
    datagrid scrolls
    > horizontally, some unrelated cell colors also change
    green and some of the
    > data
    > gets duplicated in the cells. The underlying data
    provider's data is not
    > confused however. Seems the rendering is screwed up when
    the Datagrid
    > scrolls.
    >
    > Did you find a solution to this problem? I think
    Datagrid is a piece of
    > screwed up code.
    http://www.magnoliamultimedia.com/flex_examples/Amys_Flex_FAQ.pdf
    Q2

  • Flex Mobile List Item Renderer problems

    i have flex mobile list created with item renderer,i remove individual item in flex mobile list,it is worked very well,but some times i double click action or another scroll event using in list, last item doesn't delete in flex mobile list.it is repeated again and again.so anyone this problem faced,give me a solution.
    i expect your feedback.Thanking You

    Hi Alex,
    I've searched a lot for that post (on this forum and on google). Not sure if this is the post you were talking about: http://tech.groups.yahoo.com/group/flexcoders/message/161146
    I have fixed the setter of the data not to also manage the state (I figured it was inappropriate there)... overrode the getCurrentRendererState, I'm managing the state staight from the data. When I run the following... All sold items show as sold... and normal states show as normal. When I try to hover over the normal state, it dosen't play the hovered state, and when I click to the selected state. These built in states don't work.
    override public function set data(value:Object):void {
         super.data = value;
         ticketNumber_ti.text = value.slots_id;
    override protected function getCurrentRendererState():String {
         var state:String;
         if (data.date_purchased != null) {
              state = 'sold';
              mouseChildren = false;
              mouseEnabled = false;
         }  else {
              state = 'normal';
              mouseChildren = true;
              mouseEnabled = true;
         return state;
    On another note, the states only update, once I start scrolling, everything updates... I tried to validateDisplayList() to the List after setting the dataProvider with no luck.
    Once I find a solution I will certainly add it to my Blog as I have not found a lot of solutions for this problem.
    Any help is grteatly appreciated.

  • AdvancedDataGrid Item Renderer Problem

    I have a problem in AdvancedDataGrid Item Renderer.
    The Grid is having dynamic add/remove row functionality and the first column I having an Item Renderer.
    I am facing a problem when I add and remove row from the grid. The item Renderer.
    is misplaced in different row.
    If you click on the node new row will get added. (only by clicking Asset Sale & CDS node, not for other nodes).
    Try clicking more than 6 times then do delete row you can see the problem.
    Please find the attachment for code sample.
    I have been trying this out for quiet some time. But no hope.
    Can any one solve this issue?
    Thax
    Tamil Selvan

    Sorry, I forgot to tell the file in the attached zip.
    THe file name is: ActionPlanTest.html

  • Problem with checkbox item renderer in datagrid

    I have a data grid having check box as an item renderer. I have viewed many posts in this forum but nothing useful in my case. I am failed to bind my datagrid itemrenderer checkbox with the field of dataprovider i.e. listUnitMovement.CHECK_PATH. Then I have to traverse data provider to check which checkboxes are checked.
    [Bindable]
    var listUnitMovement:XMLList=null;                      
    In a function call
    public function init(event:ResultEvent):void
        listUnitMovement=event.result.unitmovement;
         <mx:DataGrid id="dg_country"
                               dataProvider="{listUnitMovement}"
                                  enabled="true">
                                <mx:columns>
                                   <mx:DataGridColumn>
                                        <mx:itemRenderer>
                                            <mx:Component>
                                                <mx:CheckBox selectedField="CHECK_PATH"  />
                                            </mx:Component>                                       
                                        </mx:itemRenderer>
                                    </mx:DataGridColumn>
                                    <mx:DataGridColumn headerText="Latitude" dataField="NEW_LAT" visible="false"/>
                                    <mx:DataGridColumn headerText="Longitude" dataField="NEW_LONG" visible="false"/>
                                   <mx:DataGridColumn>
                                        <mx:itemRenderer>
                                            <mx:Component>
                                                <mx:Button label="Details"/>
                                            </mx:Component>                                       
                                        </mx:itemRenderer>
                                    </mx:DataGridColumn>
                                </mx:columns>
                            </mx:DataGrid>

    Hi,
    Do you want to just check/uncheck the checkboxes based on the CHECK_PATH field.
    Do you want something like this...
    <?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] 
    private var listUnitMovement:ArrayCollection = new ArrayCollection([{CHECK_PATH:true,NEW_LAT:109.233,NEW_LONG:232.22},{CHECK_PATH:true,NEW_LAT:109.233,NEW_LONG:232.22},{CHECK_PATH:false,NEW_LAT:133.233,NEW_LONG:702.22}]);]]>
    </mx:Script>
     <mx:DataGrid dataProvider="{listUnitMovement}">
     <mx:columns>
     <mx:DataGridColumn>
     <mx:itemRenderer>
     <mx:Component>
     <mx:CheckBox selectedField="CHECK_PATH" change="data.CHECK_PATH=selected" />
     </mx:Component>  
    </mx:itemRenderer>
     </mx:DataGridColumn>
     <mx:DataGridColumn dataField="NEW_LAT"/>
     <mx:DataGridColumn dataField="NEW_LONG"/>
     </mx:columns>
     </mx:DataGrid>
    </mx:Application>
    Please let me know clearly what's your problem...Do you want to just bind the check box based on XmlList or something else..?
    Thanks,
    Bhasker Chari.S

  • When to use Drop In Item renderer and InLine Item Renderers ??

    Hi ,
    I am getting confused in where to use Inline ItemRenderer and DropIn Item Renderer .
    What i feel is that DROP in Item Renderer are easy to use , and those can satisfy any requirements .
    What i read from tutorilas that we cant use Drop In because they say ,  The only drawback to using  drop in is that them is that you cannot configure them
    Please help me .

    Hi Kiran,
    Here is the detailed explanation you needed:
    You can also refer the link below:
    http://blog.flexdevelopers.com/2009/02/flex-basics-item-renderers.html
    Drop-In Item Renderers
    Drop-In Item Renderers are generic in nature and don't rely on specific data fields to render data. This allows them to be used with a wide range of data sets, hence, the term “drop-in”. Drop-In Item Renderers can be “dropped-in” to any list-based control regardless of the dataprovider’s data properties.
    In our previous example, the employee photo property requires use of a custom Item Renderer to render properly in the UI. In this scenario the Image component satisfies our rendering needs out of the box. Implemented as a Drop-In Item Renderer, the Image component takes any data property regardless of name and uses it as the Image component's source property value. Assuming our employee photo property contains a valid image path, the Image Drop-In Item Renderer will work perfectly and resolve the image path as an image in the UI.
    <!-- Drop-in Item Renderer: Image control -->
    <mx:DataGridColumn dataField="photo"
                       headerText="Employee Photo"
                       itemRenderer="mx.controls.Image"/>
    Drop-In Item Renderers are simple and easy to use and satisfy specific use cases nicely. However, they provide no flexibility whatsoever. If your needs are not satisfied by a Drop-In Item Renderer, you must create your own Item Renderer as an inline component or an external component.
    Inline Item Renderers
    Generally used for simple item rendering requiring minimal customization, inline Item Renderers are defined as a component nested within the MXML of your list-based control.
    It is important to note that Item Renderers nested within the itemrender property of a list-based control occupy a different scope than the list-based control. Any attempt to reference members (properties or methods) of the parent component from the nested Item Renderer component will result in a compile-time error. However, references to the members of the parent component can be achieved by utilizing the outerDocument object.
    <mx:DataGrid id="myGrid" dataProvider="{gridData}">
       <mx:columns>
          <mx:DataGridColumn headerText="Show Relevance">
             <mx:itemRenderer>
                <mx:Component>
                   <mx:Image source="{'assets/images/indicator_' + data.showRelevance + '.png'}"
                             toolTip="{(data.showRelevance == 1) ? 'On' : 'Off'}"
                             click="outerDocument.toggle()" />
                </mx:Component>
             </mx:itemRenderer>
          </mx:DataGridColumn>
       </mx:columns>
    </mx:DataGrid>
    Remember, rules of encapsulation still apply. Mark all properties or methods public if you want them accessible by your inline Item Renderer. In the previous example, the toggle() method must have a public access modifier to expose itself to the inline Item Renderer.
    public function toggle():void
    Inline Item Renderers can also be reusable by creating a named component instance outside of the list-based control. This component must have an id property and contain the rendering logic of the Item Renderer. Using data bindings, the component is assigned to the itemrenderer property of one or more data properties of a list-based control.
    <!-- Reusable inline Item Renderer -->
    <mx:Component id="ImageRenderer">
       <mx:VBox width="100%" height="140"
                horizontalAlign="center" verticalAlign="middle">
          <mx:Image source="{'assets/'+data.image}"/>
          <mx:Label text="{data.image}" />
       </mx:VBox>
    </mx:Component>
    <!-- Used within a list-based control-->
    <mx:DataGridColumn headerText="Image"
                       dataField="image" width="150"
                       itemRenderer="{ImageRenderer}"/>
    In the previous example, note that the Item Renderer component contains 2 UI controls – Image and Label. When using multiple controls within an Item Renderer, a layout container is required. In this example, a VBox was used.
    If this post answers your question or helps, please kindly mark it as such.
    Thanks,
    Bhasker Chari
    Message was edited by: BhaskerChari

  • Strange Problem with datagrid item renderer in flash palyer 10

    Hi All
    In Flash player 10 when i use a text input as a item renderer in grid with a custom textinput skin , it does not show us the text , where as in flash player 11 it shows us. is there any work around for it or it's a bug.
    Plz help  me on this.

    The url works for me.  Please verify that you entered it correctly.  There are other sites that will verify your player version.  Search for them, pick one and report the results.
    Before you file a bug, it is probably best to do some investigation first to make sure it isn’t a known issue or an issue in your code.

  • Drag and Drop in Item Renderer

    I created an item renderer for use in a TileList. This item
    renderer shows a thumbnail, name, and a few buttons. I want to
    enable drag but only for the image. I know it is easy to enable
    drag for Tile List items as a whole, but how do I do that for just
    part of an item, which was rendered using my custom item renderer?
    Thanks for any help!

    Have you tried to turn off drag for TileList and enable it
    only for the thumbnail? It should work.
    ATTA

  • Problem when filling Node and Item tables for the metho add_nodes_and_items

    Hi Experts,
    I am facing problem when filling  Node and Item internal tables for the method add_nodes_and_items.
    as i have written the below logic:
      LOOP AT gt_partner INTO wa_partner.
        CLEAR lvs_tc_root.
        l_key = l_key + 1.
        lvs_tc_root-node_key   = l_key. "wa_partner-sndprn.
    *  lvs_tc_root-relatkey  = lvf_tc_node_key.
    *  lvs_tc_root-relatship = cl_gui_column_tree=>relat_last_child.
        lvs_tc_root-last_hitem = wa_partner-sndprn.
        lvs_tc_root-hidden     = ' '.
        lvs_tc_root-disabled   = ' '.
        lvs_tc_root-isfolder   = 'X'.
        lvs_tc_root-n_image    = icon_folder.
        lvs_tc_root-exp_image  = icon_folder.
        lvs_tc_root-expander   = 'X'.
        APPEND lvs_tc_root TO gvt_tc_node_table.
        CLEAR lvs_tc_root.
        lvs_tc_root-node_key   = 'A'.  "Successfull
        lvs_tc_root-relatkey   = l_key.
        lvs_tc_root-relatship  = cl_gui_column_tree=>relat_last_child.
        lvs_tc_root-last_hitem = wa_partner-sndprn.
        lvs_tc_root-hidden     = ' '.
        lvs_tc_root-disabled   = ' '.
        lvs_tc_root-n_image    = icon_green_light.
        APPEND lvs_tc_root TO gvt_tc_node_table.
        CLEAR lvs_tc_root.
        lvs_tc_root-node_key   = 'B'.  "Errors
        lvs_tc_root-relatkey   = l_key    .
        lvs_tc_root-last_hitem = wa_partner-sndprn.
        lvs_tc_root-hidden     = ' '.
        lvs_tc_root-disabled   = ' '.
        lvs_tc_root-n_image    = icon_red_light.
        APPEND lvs_tc_root TO gvt_tc_node_table.
        CLEAR lvs_tc_root.
        lvs_tc_root-node_key  = 'C'.  "Deleted
        lvs_tc_root-relatkey  = l_key .
        lvs_tc_root-last_hitem = wa_partner-sndprn.
        lvs_tc_root-hidden    = ' '.
        lvs_tc_root-disabled  = ' '.
        lvs_tc_root-n_image   = icon_yellow_light.
        APPEND lvs_tc_root TO gvt_tc_node_table.
    *   LOOP AT gt_partner_item INTO wa_partner_item WHERE sndprn = wa_partner-sndprn
        LOOP AT gt_partner INTO wa_partner_item WHERE sndprn = wa_partner-sndprn.
          CLEAR lvs_item.
          lvs_item-node_key   = l_key.
          lvs_item-item_name  = 'Column1'.
          lvs_item-text       = wa_partner-sndprn.
          lvs_item-class      = cl_gui_column_tree=>item_class_text.
          APPEND lvs_item TO gvt_tc_item_table. CLEAR lvs_item.
          lvs_item-node_key   = 'A'.
          lvs_item-item_name  = 'Column1'.
          lvs_item-text       = 'Successful'.
          lvs_item-class      = cl_gui_column_tree=>item_class_text.
          APPEND lvs_item TO gvt_tc_item_table. CLEAR lvs_item.
          lvs_item-node_key   = 'B'.
          lvs_item-item_name  = 'Column1'.
          lvs_item-text       = 'Errors'.
          lvs_item-class      = cl_gui_column_tree=>item_class_text.
          APPEND lvs_item TO gvt_tc_item_table. CLEAR lvs_item.
          lvs_item-node_key   = 'C'.
          lvs_item-item_name  = 'Column1'.
          lvs_item-text       = 'Deleted'.
          lvs_item-class      = cl_gui_column_tree=>item_class_text.
          APPEND lvs_item TO gvt_tc_item_table. CLEAR lvs_item.
        ENDLOOP.
      ENDLOOP.
      CALL METHOD go_tree->add_nodes_and_items
        EXPORTING
          node_table                     = gvt_tc_node_table
          item_table                     = gvt_tc_item_table
          item_table_structure_name      = 'MTREEITM'
        EXCEPTIONS
          failed                         = 1
          cntl_system_error              = 3
          error_in_tables                = 4
          dp_error                       = 5
          table_structure_name_not_found = 6.
    If the internal table has more than 1 record getting dump...Runtime Errors         MESSAGE_TYPE_X
    Plase let me know how to overcome the problem..
    Thanks,
    Rajasekhar
    Edited by: RajasekharReddy Nevali on Nov 29, 2010 3:43 PM
    Edited by: Neil Gardiner on Nov 30, 2010 12:41 PM

    Hi ,
    U can undestand the code and one more thing dynamically display record for automcally here i am using root nodes please look at that one Same requiremtn i done previously.
    cLEAR item.
      item-node_key = c_nodekey-root.    "partner1
      item-item_name = c_column-column1.
      item-class = cl_gui_column_tree=>item_class_text.
      item-alignment = cl_gui_column_tree=>align_at_top.
      item-font = cl_gui_column_tree=>item_font_prop.
      item-text = 'APPLICATION'.
      item-length = 30.
      APPEND item TO item_table.
      DATA:lv_name TYPE tv_itmname VALUE '1',
           lv_nkey TYPE i,
           lv_nkey2 TYPE i,
           lv_nkey_c TYPE string,
           lv_nkey_c2 TYPE string,
           lv_nkey_c3 TYPE string,
           lv_nkey_c4 TYPE string,
           LV_NKEY_C5 TYPE STRING,
           lv_itmkey TYPE i,
           lv_itmkey_c TYPE string,
           LV_INDEX TYPE I.
    ************************************************LOOP FOR APPLICATION*********
      LOOP AT i_otypes INTO wa_otypes.
        read table it_appl into wa_appl with key appl = wa_otypes-applic." BINARY SEARCH.
              if sy-subrc = 0.
                lv_apdes = wa_appl-text1.
              endif.
        CLEAR:item,lv_nkey_c.
        lv_nkey_c = sy-tabix.
        LV_INDEX = SY-TABIX.
        CONDENSE lv_nkey_c.
        CONCATENATE 'N' lv_nkey_c INTO lv_nkey_c.
        node-node_key = lv_nkey_c.
        node-relatkey = c_nodekey-root.
        node-relatship = cl_gui_list_tree=>relat_last_child.
        node-isfolder = 'X'.
        APPEND node TO node_table.
        CLEAR item.
        item-node_key = lv_nkey_c.
        item-item_name = c_column-column1.
        item-class = cl_gui_column_tree=>item_class_text.
        item-font = cl_gui_column_tree=>item_font_prop.
        item-text = wa_otypes-APPLIC.
        item-length = 30.
        APPEND item TO item_table.
         CLEAR item.
          item-node_key = lv_nkey_c.
          item-item_name = c_column-column2.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = lv_apdes.
          item-length = 30.
          APPEND item TO item_table.
         v_acount = v_acount + 1.
         v_acount1 = v_acount1 + 1.
    clear lv_apdes.
    *****************************************LOOP FOR ARCHIV OBJECTS***************************
        loop at it_obj into wa_obj where applic = wa_otypes-applic.
          CLEAR:item,lv_nkey_c2.
          lv_nkey_c2 = SY-TABIX.
          CONDENSE lv_nkey_c2.
          CONCATENATE 'SN' lv_nkey_c2 INTO lv_nkey_c2.
          node-node_key = lv_nkey_c2.
          node-relatkey = lv_nkey_c.
          node-relatship = cl_gui_list_tree=>relat_last_child.
          node-isfolder = 'X'.
          APPEND node TO node_table.
          CLEAR item.
          item-node_key = lv_nkey_c2.
          item-item_name = c_column-column1.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = wa_obj-object.
          item-length = 30.
          APPEND item TO item_table.
          CLEAR item.
          item-node_key = lv_nkey_c2.
          item-item_name = c_column-column2.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = wa_obj-objtext.
          item-length = 30.
          APPEND item TO item_table.
    ****count all object for final displaying*******
         v_ocount1 = v_ocount1 + 1.
          LV_STR = LV_STR + 1.
         ENDLOOP.
    *********************LOOP FOR ARCH OBJECT ALL PROGRAMS*******************************************
       LOOP AT IT_PRG INTO WA_PRG WHERE OBJECT = WA_OBJ-OBJECT.
    ****************1PRG**********************
    IF wa_PRG-REORGA_PRG IS NOT INITIAL.
      read table it_trdirt into wa_trdirt with key name = wa_prg-reorga_prg BINARY SEARCH.
                  if sy-subrc = 0.
                  lv_text = wa_trdirt-text.
                  endif.
         CLEAR:item,lv_nkey_c3.
          data : v_no type sy-tabix.
          v_no = v_no + 1.
          lv_nkey_c3  =  v_no.
          CONDENSE lv_nkey_c3.
          CONCATENATE 'SSN' lv_nkey_c3 INTO lv_nkey_c3.
          node-node_key = lv_nkey_c3.
          node-relatkey = lv_nkey_c2.
          node-relatship = cl_gui_list_tree=>relat_last_child.
          node-isfolder = 'X'.
          NODE-N_image =' '.
          APPEND node TO node_table.
           CLEAR NODE.
          CLEAR item.
          item-node_key = lv_nkey_c3.
          item-item_name = c_column-column1.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = 'WRIT'."wa_PRG-REORGA_PRG.
          item-length = 30.
          APPEND item TO item_table.
          CLEAR item.
          item-node_key = lv_nkey_c3.
          item-item_name = c_column-column2.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = 'WRITE PROGRAM'."lv_text."'WRITE PROGRAM'.
          item-length = 30.
          APPEND item TO item_table.
           clear lv_text.
    ************************SSSN NODE***********************
            CLEAR:item,lv_nkey_c4.
          data : v_no1 type sy-tabix.
          v_no1 = v_no1 + 1.
          lv_nkey_c4  =  v_no1.
          CONDENSE lv_nkey_c4.
          CONCATENATE 'SSSN' lv_nkey_c4 INTO lv_nkey_c4.
          node-node_key = lv_nkey_c4.
          node-relatkey = lv_nkey_c3.
          node-relatship = cl_gui_list_tree=>relat_last_child.
         node-isfolder = 'X'.
          NODE-N_image =' '.
          APPEND node TO node_table.
           CLEAR NODE.
          CLEAR item.
          item-node_key = lv_nkey_c4.
          item-item_name = c_column-column1.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = wa_PRG-REORGA_PRG.
          item-length = 30.
          APPEND item TO item_table.
          CLEAR item.
          item-node_key = lv_nkey_c4.
          item-item_name = c_column-column2.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = lv_text."'WRITE PROGRAM'.
          item-length = 30.
          APPEND item TO item_table.
            clear lv_text.
    *******COUNT TYPE WRITE PROGRAMS****************
          V_WCOUNT = V_WCOUNT + 1.
    CLEAR item.
    V_WCOUNT = V_WCOUNT.
          item-node_key = lv_nkey_c3.
          item-item_name = c_column-column3.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = V_WCOUNT."lv_text."'WRITE PROGRAM'.
          item-length = 30.
          APPEND item TO item_table.
          CLEAR V_WCOUNT.
    ENDIF.
    *endif.
    *****************2PRG*****************
    IF wa_PRG-RETRIE_PRG IS NOT INITIAL.
    read table it_trdirt into wa_trdirt with key name = wa_prg-retrie_prg.
                  if sy-subrc = 0.
                  lv_text = wa_trdirt-text.
                  endif.
         CLEAR:item, NODE, lv_nkey_c3.
          v_no = v_no + 1.
          lv_nkey_c3  =  v_no.
          CONDENSE lv_nkey_c3.
          CONCATENATE 'SSN' lv_nkey_c3 INTO lv_nkey_c3.
          node-node_key = lv_nkey_c3.
          node-relatkey = lv_nkey_c2.
          node-relatship = cl_gui_list_tree=>relat_last_child.
          node-isfolder = 'X'.
          APPEND node TO node_table.
          CLEAR item.
          item-node_key = lv_nkey_c3.
          item-item_name = c_column-column1.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = 'successful'."wa_PRG-RETRIE_PRG.
          item-length = 30.
          APPEND item TO item_table.
          CLEAR item.
          item-node_key = lv_nkey_c3.
          item-item_name = c_column-column2.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = 'sucessful PROGRAM'.
          item-length = 60.
          APPEND item TO item_table.
    *********************************SSSN NODE*******************************
           CLEAR:item,lv_nkey_c4,node.
         data : v_no1 type sy-tabix.
          v_no1 = v_no1 + 1.
          lv_nkey_c4  =  v_no1.
          CONDENSE lv_nkey_c4.
          CONCATENATE 'SSSN' lv_nkey_c4 INTO lv_nkey_c4.
          node-node_key = lv_nkey_c4.
          node-relatkey = lv_nkey_c3.
          node-relatship = cl_gui_list_tree=>relat_last_child.
         node-isfolder = 'X'.
          NODE-N_image =' '.
          APPEND node TO node_table.
           CLEAR NODE.
          CLEAR item.
          item-node_key = lv_nkey_c4.
          item-item_name = c_column-column1.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = wa_PRG-RETRIE_PRG.
          item-length = 30.
          APPEND item TO item_table.
          CLEAR item.
          item-node_key = lv_nkey_c4.
          item-item_name = c_column-column2.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = lv_text."'WRITE PROGRAM'.
          item-length = 30.
          APPEND item TO item_table.
            clear lv_text.
    **********COUNT THE RELOADPR*******************
              V_WCOUNT = V_WCOUNT + 1.
    CLEAR item.
    V_WCOUNT = V_WCOUNT.
          item-node_key = lv_nkey_c3.
          item-item_name = c_column-column3.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = V_WCOUNT."lv_text."'WRITE PROGRAM'.
          item-length = 30.
          APPEND item TO item_table.
          CLEAR V_WCOUNT.
    ENDIF.
    ENDIF.
    ****************3PRG**********************
    IF wa_PRG-DELETE_PRG IS NOT INITIAL.
    read table it_trdirt into wa_trdirt with key name = wa_prg-delete_prg.
                  if sy-subrc = 0.
                  lv_text = wa_trdirt-text.
                  endif.
         CLEAR:item, NODE, lv_nkey_c3.
          v_no = v_no + 1.
          lv_nkey_c3  =  v_no.
          CONDENSE lv_nkey_c3.
          CONCATENATE 'SSN' lv_nkey_c3 INTO lv_nkey_c3.
          node-node_key = lv_nkey_c3.
          node-relatkey = lv_nkey_c2.
          node-relatship = cl_gui_list_tree=>relat_last_child.
          node-isfolder = 'X'.
          APPEND node TO node_table.
          CLEAR item.
          item-node_key = lv_nkey_c3.
          item-item_name = c_column-column1.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = 'DELETE'."wa_PRG-DELETE_PRG.
          item-length = 30.
          APPEND item TO item_table.
          CLEAR item.
          item-node_key = lv_nkey_c3.
          item-item_name = c_column-column2.
          item-class = cl_gui_column_tree=>item_class_text.
          item-font = cl_gui_column_tree=>item_font_prop.
          item-text = 'NAME OF DELETE PROGRAM'.
          item-length = 60.
          APPEND item TO item_table.
           CLEAR:item,lv_nkey_c4,node.
         data : v_no1 type sy-tabix.
          v_no1 = v_no1 + 1.
          lv_nkey_c4  =  v_no1.
          endloop.

  • Changing List's item renderer and layout causes exception

    I have buttons in my UI to switch a list between a tile view (thumbnails) and a list view (details).
    This code works:
         var layout:TileLayout = new TileLayout();
         resultsList.layout = layout;
         resultsList.itemRenderer = new ClassFactory(MediaTileRenderer);
    This code doesn't:
         var layout:VerticalLayout = new VerticalLayout();
         resultsList.layout = layout;
         resultsList.itemRenderer = new ClassFactory(MediaItemRenderer);
    It's not the item renderer's fault, I can use the tile renderer again in the second block of code and it will still explode.  If I swap the VerticalLayout for a TileLayout, it works fine.  HorizontalLayout explodes.
    The exception is occurring in LinearLayoutVector/remove (541):
    Error: invalidIndex
    at spark.layouts.supportClasses::LinearLayoutVector/remove()[E:\dev\4.x\frameworks\projects\ spark\src\spark\layouts\supportClasses\LinearLayoutVector.as:541]
    at spark.layouts::VerticalLayout/elementRemoved()[E:\dev\4.x\frameworks\projects\spark\src\s park\layouts\VerticalLayout.as:1311]
    at spark.components::DataGroup/http://www.adobe.com/2006/flex/mx/internal::itemRemoved()[E:\dev\4.x\frameworks\projects\s park\src\spark\components\DataGroup.as:1580]
    at spark.components::DataGroup/removeRendererAt()[E:\dev\4.x\frameworks\projects\spark\src\s park\components\DataGroup.as:625]
    at spark.components::DataGroup/removeAllItemRenderers()[E:\dev\4.x\frameworks\projects\spark \src\spark\components\DataGroup.as:642]
    at spark.components::DataGroup/set itemRenderer()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\DataGroup.as:446 ]
    at spark.components::SkinnableDataContainer/set itemRenderer()[E:\dev\4.x\frameworks\projects\spark\src\spark\components\SkinnableDataCon tainer.as:420]
    Does anyone know why this doesn't work?  It seems like a fairly common idea- using a single list and toggling between different view modes.

    Here's a zip of a sample project: http://dl.dropbox.com/u/15760/LayoutTest.zip.
    A workaround that I've found:
    Switch to a BasicLayout while changing the itemRenderer, then apply the VerticalLayout afterwards.

Maybe you are looking for