如何将列值传递给 AdvancedDataGridColumn Flex 中的 dataTipFunction

How to pass column value to dataTipFunction in AdvancedDataGridColumn Flex

Flex 专家,

我是这里的新手。我正在尝试为我的联系人详细信息屏幕创建条件工具提示。如果联系人有 'special-roles',如 'ABC, XYZ',则工具提示应该出现,否则不会出现。我们有 AdvancedDataGridColumn 并使用 dataTipFunction 来显示工具提示。

我正在传递 dataProvider 中所有联系人对象的角色值和 'special-roles'。 我需要为每一行(每个联系人)编写工具提示条件。我无法在 dataTipFunction 中写入条件,因为它只能访问 'item' 对象。我在 '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";
        }

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

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