Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何在Flex的MXDataGrid行中显示工具提示?_Actionscript 3_Apache Flex_Flash Builder - Fatal编程技术网

Actionscript 3 如何在Flex的MXDataGrid行中显示工具提示?

Actionscript 3 如何在Flex的MXDataGrid行中显示工具提示?,actionscript-3,apache-flex,flash-builder,Actionscript 3,Apache Flex,Flash Builder,我想知道如何显示每个数据网格行的工具提示,或者如何在工具提示中显示某些特定列的数据。如果您有一个数据网格,并且希望在鼠标上方显示特定于行的数据,下面是如何做到这一点的 第一步是为要启用此功能的每个DataGridColumn启用showDataTips属性 其次,您需要在DataGrid本身上有一个dataTipFunction函数。因为dataTipFunction将网格行数据作为对象传递给调用函数,所以不需要向其传递任何参数。这里有一个小例子,说明如何做到这一点 <?xml versi

我想知道如何显示每个数据网格行的工具提示,或者如何在工具提示中显示某些特定列的数据。

如果您有一个数据网格,并且希望在鼠标上方显示特定于行的数据,下面是如何做到这一点的

第一步是为要启用此功能的每个DataGridColumn启用showDataTips属性

其次,您需要在DataGrid本身上有一个dataTipFunction函数。因为dataTipFunction将网格行数据作为对象传递给调用函数,所以不需要向其传递任何参数。这里有一个小例子,说明如何做到这一点

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="doInit();">
<mx:Script>
    <!![CDATA[

        import mx.collections.ArrayCollection; // this holds the grid data

        [Bindable]
        private var myData:ArrayCollection = new ArrayCollection();

        private function doInit():void {
            myData.addItem({fname:"Joe",lname:"Bloggs"});
            myData.addItem({fname:"Joe1",lname:"Bloggs"});
        }

        private function buildToolTip(item:Object):String {
            var myString:String = "";
            if(item != null) {
                myString = myString + "Firstname : " + item.fname + "\n";
                myString = myString + "Lastname : " + item.lname + "\n";
            }

            return myString;
        }
    ]]>
</mx:Script>
<mx:DataGrid id="dGrid"  dataProvider="{myData}"  visible="true" dataTipFunction="buildToolTip">
    <mx:columns>
        <mx:DataGridColumn dataField="fname" headerText="FirstName" showDataTips="true" />
        <mx:DataGridColumn dataField="lname" headerText="LastName" showDataTips="true" />
    </mx:columns>
</mx:DataGrid>
</mx:Application>

资料来源:

以下是另一个来源的解释:

我使用了itemRollOver和itemRollOut事件。 在itemRollOver中,我们在行中找到对象的值,我们得到对象的标签,并将其设置为datagrid工具提示。 “项目”卷展栏的行为就像一个清洁器

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
            import mx.controls.dataGridClasses.DataGridItemRenderer;
            import mx.events.ListEvent;
            import mx.controls.ToolTip;

            private function createToolTip(event:ListEvent):void {
                var str:String =  DataGridItemRenderer(event.itemRenderer).data.label;
                dataGrid.toolTip = str;
            }

            private function deleteToolTip(obj:Object):void {
                dataGrid.toolTip = null;
            }

        ]]>
    </mx:Script>

    <mx:ArrayCollection id="arrColl">
        <mx:source>
            <mx:Array>
                <mx:Object label="Student A" score="85" />
                <mx:Object label="Student B" score="48" />
                <mx:Object label="Student C" score="71" />
                <mx:Object label="Student D" score="88" />
                <mx:Object label="Student E" score="24" />
                <mx:Object label="Student F" score="64" />
            </mx:Array>
        </mx:source>
    </mx:ArrayCollection>

    <mx:DataGrid id="dataGrid"
            dataProvider="{arrColl}"
            itemRollOut="deleteToolTip(event)"
            itemRollOver="createToolTip(event)"       
            >
        <mx:columns>
            <mx:DataGridColumn dataField="label" />
            <mx:DataGridColumn dataField="score" />
        </mx:columns>
    </mx:DataGrid>

</mx:Application>

资料来源:


-如果您有一个DataGrid,并且希望在鼠标上方显示特定于行的数据,希望这对您有所帮助

第一步是为要启用此功能的每个DataGridColumn启用showDataTips属性

其次,您需要在DataGrid本身上有一个dataTipFunction函数。因为dataTipFunction将网格行数据作为对象传递给调用函数,所以不需要向其传递任何参数。这里有一个小例子,说明如何做到这一点

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="doInit();">
<mx:Script>
    <!![CDATA[

        import mx.collections.ArrayCollection; // this holds the grid data

        [Bindable]
        private var myData:ArrayCollection = new ArrayCollection();

        private function doInit():void {
            myData.addItem({fname:"Joe",lname:"Bloggs"});
            myData.addItem({fname:"Joe1",lname:"Bloggs"});
        }

        private function buildToolTip(item:Object):String {
            var myString:String = "";
            if(item != null) {
                myString = myString + "Firstname : " + item.fname + "\n";
                myString = myString + "Lastname : " + item.lname + "\n";
            }

            return myString;
        }
    ]]>
</mx:Script>
<mx:DataGrid id="dGrid"  dataProvider="{myData}"  visible="true" dataTipFunction="buildToolTip">
    <mx:columns>
        <mx:DataGridColumn dataField="fname" headerText="FirstName" showDataTips="true" />
        <mx:DataGridColumn dataField="lname" headerText="LastName" showDataTips="true" />
    </mx:columns>
</mx:DataGrid>
</mx:Application>

资料来源:

以下是另一个来源的解释:

我使用了itemRollOver和itemRollOut事件。 在itemRollOver中,我们在行中找到对象的值,我们得到对象的标签,并将其设置为datagrid工具提示。 “项目”卷展栏的行为就像一个清洁器

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
            import mx.controls.dataGridClasses.DataGridItemRenderer;
            import mx.events.ListEvent;
            import mx.controls.ToolTip;

            private function createToolTip(event:ListEvent):void {
                var str:String =  DataGridItemRenderer(event.itemRenderer).data.label;
                dataGrid.toolTip = str;
            }

            private function deleteToolTip(obj:Object):void {
                dataGrid.toolTip = null;
            }

        ]]>
    </mx:Script>

    <mx:ArrayCollection id="arrColl">
        <mx:source>
            <mx:Array>
                <mx:Object label="Student A" score="85" />
                <mx:Object label="Student B" score="48" />
                <mx:Object label="Student C" score="71" />
                <mx:Object label="Student D" score="88" />
                <mx:Object label="Student E" score="24" />
                <mx:Object label="Student F" score="64" />
            </mx:Array>
        </mx:source>
    </mx:ArrayCollection>

    <mx:DataGrid id="dataGrid"
            dataProvider="{arrColl}"
            itemRollOut="deleteToolTip(event)"
            itemRollOver="createToolTip(event)"       
            >
        <mx:columns>
            <mx:DataGridColumn dataField="label" />
            <mx:DataGridColumn dataField="score" />
        </mx:columns>
    </mx:DataGrid>

</mx:Application>

资料来源:


-希望这有助于添加Aarons答案,如果您只想在文本长度超过列宽时显示工具提示,则可以使用以下代码(基于滚动事件示例):


event.itemRenderer.width){
var str:String=DataGridItemRenderer(event.itemRenderer).data.label;
dataGrid.toolTip=str;
}
}
专用函数deleteToolTip(对象:对象):无效{
dataGrid.toolTip=null;
}
]]>

添加到Aarons应答中,如果只想在文本长度超过列宽时显示工具提示,则可以使用此代码(基于滚动事件示例):


event.itemRenderer.width){
var str:String=DataGridItemRenderer(event.itemRenderer).data.label;
dataGrid.toolTip=str;
}
}
专用函数deleteToolTip(对象:对象):无效{
dataGrid.toolTip=null;
}
]]>