如何将列值传递给 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;
}
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;
}