2017-05-11 6 views
0

Flex Experts,Comment passer la valeur de la colonne à dataTipFunction dans AdvancedDataGridColumn Flex

Je suis un débutant ici. J'essaie de créer une info-bulle conditionnelle pour mon écran de détails de contact. Si le contact a des «rôles spéciaux» comme «ABC, XYZ», la pointe de l'outil devrait apparaître autrement. Nous avons AdvancedDataGridColumn et en utilisant dataTipFunction pour afficher l'info-bulle.

Je passe, les valeurs des rôles & 'special-roles' dans dataProvider pour tous les objets de contact. Je dois écrire l'état de la pointe de l'outil pour chaque rangée (chaque contact). Je suis incapable d'écrire la condition dans dataTipFunction car il n'a accès qu'à l'objet 'item'. J'ai essayé Trace et Alert sur 'item', mais l'écran devient vide.

J'ai aussi essayé "showDataTips" qui accepte les booléens mais en vain. J'ai besoin d'un moyen de passer les valeurs de ligne actuelles (toutes les colonnes) à une fonction de AdvancedDataGridColumn.

Voici l'instantané de mon code. Toute aide est très appréciée :)

<view:CopyPasteDataGrid id="contactsHolder" 
        width="100%" 
        height="100%" 
        displayDisclosureIcon="true" 
        variableRowHeight="true" 
        defaultLeafIcon="{null}" 
        folderClosedIcon="{null}" 
        folderOpenIcon="{null}" 
        useRollOver="true" 
        selectable="true" 
        styleName="PortfolioAdvanced" 
        designViewDataType="tree" 
        horizontalCenter="true" 
        verticalGridLines="false" 
        horizontalScrollPolicy="off" 
        dataProvider="{contactDetails}" 
        headerRelease="onHeaderRelease(event)"> 
    <view:columns> 
     <mx:AdvancedDataGridColumn dataField="lastName" 
            sortCompareFunction="lastNameCompare" 
            headerText="{ApplicationConstants.LAST_NAME_HEADER}" 
            showDataTips="true" dataTipFunction="buildToolTipForContact" 
            width="100"/> 
    <view:rendererProviders> 
     <mx:AdvancedDataGridRendererProvider dataField="projectContacts" 
              renderer="com.ihg.hom.common.view.components.render.ContactsRenderer" 
              columnIndex="0" 
              columnSpan="0"/> 
    </view:rendererProviders> 
</view:CopyPasteDataGrid> 


private function buildToolTipForContact(item:Object):String 
     { 
      var myString:String=""; 

      return "hello"; 
     } 
+0

Ne recevez-vous pas votre objet de données en tant qu'élément? Ensuite, vous pouvez vérifier si votre objet de données contient vos rôles spéciaux et afficher une info-bulle, sinon retourner ""? – Philarmon

+0

Chaque fois que j'accède ** item.something ** L'écran devient vide. J'ai besoin des propriétés de contact actuelles (nom, rôles, etc) pour construire l'info-bulle dans la fonction buildToolTipForContact() –

Répondre

1

Je l'ai résolu en utilisant une approche différente. J'ai utilisé la fonction d'étiquette. Il a accès à l'objet de la colonne et aux rôles de l'objet courant en cours. Voici le code de référence.

<mx:AdvancedDataGridColumn dataField="role" sortable="{isRoleSortable}" 
             labelFunction="getRole" 
             headerText="Role" sortCompareFunction="sortRole" showDataTips="true" dataTipFunction="buildToolTipForContact" 
             width="120"/> 
private var hasRole:Boolean=false; 

private function getRole(item:Object):String 
{ 
    // extra code 
    if(currentRoles.indexOf(specialRole)!=-1) 
    { 
     hasRole=true; 
    } 

} 
private function buildToolTipForContact(item:Object):String 
      { 

      var myStr:String=""; 
       if(hasRole){ 
        myStr="Special Role"; 
       } 

       return myStr; 
      }