2017-05-11 66 views
0

Flex专家,如何将列值传递到AdvancedDataGridColumn中的dataTipFunction Flex

我是新手在这里。我正在尝试为我的联系人详细信息屏幕创建条件工具提示。如果联系人具有“ABC,XYZ”这样的“特殊角色”,那么工具提示应该不会出现。我们有AdvancedDataGridColumn并使用dataTipFunction来显示工具提示。

我在传递所有联系人对象的dataProvider中的角色值&'special-roles'。 我需要为每行(每个联系人)编写工具提示条件。我无法在dataTipFunction中写入条件,因为它只能访问'item'对象。我在'项目'上尝试了跟踪和警报,但屏幕一片空白。

我也试过“showDataTips”,它接受布尔值但无济于事。我需要一种方法将当前行值(所有列)传递给AdvancedDataGridColumn中的函数。

这是我的代码的快照。任何帮助非常感谢:)

<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

难道你没有得到你的数据对象作为项目?然后你可以检查你的数据对象是否包含你的特殊角色并显示一个工具提示,否则返回“”? – Philarmon

+0

每当我访问** item.something **屏幕变为空白。我需要当前的联系属性(名称,角色等)在buildToolTipForContact()函数中构建工具提示 –

回答

1

我已经解决了它使用不同的方法。我使用标签功能。它可以访问列对象和基于当前对象角色,我正在设置工具提示。这里是供参考的代码。

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