apache-flex 如何在AdvancedDataGridColumn Flex中将列值传递给dataTipFunction

fgw7neuy  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(147)

FlexMaven,
我是一个新手。我正在尝试为我的联系人详细信息屏幕创建一个条件工具提示。如果联系人有“特殊角色”,如“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";
        }
polkgigr

polkgigr1#

我用不同的方法解决了这个问题。我用了标签函数。它可以访问列对象,并基于我正在设置的当前对象角色进行工具提示。下面是代码供参考。

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

相关问题