:もちろん
<mx:DataGrid dataProvider="{[{c1:'a1', c2:'b1', c3:'c1'}]}">
<mx:columns>
<mx:DataGridColumn headerText="Column 1" dataField="c1">
<mx:itemRenderer>
<mx:Component>
<mx:Label text="{listData.label}"
rollOver="DataGrid(owner).columns[2].visible = true"
rollOut="DataGrid(owner).columns[2].visible = false"
>
<mx:Script>
<![CDATA[
import mx.controls.DataGrid;
]]>
</mx:Script>
</mx:Label>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="Column 2" dataField="c2" />
<mx:DataGridColumn headerText="Column 3" dataField="c3" visible="false" />
</mx:DataGrid>
を、あなたはより良い代わりに、インラインアイテムレンダラーの新しいクラスを作成したいです。
3列目のレンダラーのみを表示するのは非常に難しいです。なぜなら、列全体が見えない場合、その列のレンダラーは作成されないからです。
は、私はこのように、ツールチップのようなソリューションを使用する方が良いと思う:
<mx:Script>
<![CDATA[
import test.CellRenderer;
]]>
</mx:Script>
<mx:UIComponent id="textFlowContainer" width="100%" height="100%" />
<mx:DataGrid dataProvider="{[{c1:'a1', c2:'b1', c3:'c1'}]}">
<mx:columns>
<mx:DataGridColumn headerText="Column 1" dataField="c1" itemRenderer="{new ClassFactory(CellRenderer)}" />
<mx:DataGridColumn headerText="Column 2" dataField="c2" itemRenderer="{new ClassFactory(CellRenderer)}" />
</mx:columns>
</mx:DataGrid>
test.CellRendererである場合:
<?xml version="1.0" encoding="utf-8"?>
<mx:Label xmlns:mx="http://www.adobe.com/2006/mxml" text="{listData.label}"
rollOver="rollOverHandler()" rollOut="rollOutHandler(event)">
<mx:Script>
<![CDATA[
import mx.managers.PopUpManagerChildList;
import mx.managers.PopUpManager;
import mx.controls.Label;
import mx.controls.DataGrid;
private var popupLabel:Label;
private function rollOverHandler():void
{
popupLabel = new Label();
popupLabel.addEventListener(MouseEvent.ROLL_OUT, rollOutHandler);
popupLabel.text = data.c3;
PopUpManager.addPopUp(popupLabel, this, false, PopUpManagerChildList.PARENT);
var p1:Point = new Point(0, this.y);
p1 = localToGlobal(p1);
var p2:Point = new Point(listData.owner.x+listData.owner.width, 0);
p2 = listData.owner.parent.localToGlobal(p2);
popupLabel.move(p2.x, p1.y);
}
private function rollOutHandler (event:MouseEvent):void
{
if (popupLabel && !popupLabel.hitTestPoint(event.stageX, event.stageY))
{
PopUpManager.removePopUp(popupLabel);
popupLabel = null;
}
}
]]>
</mx:Script>
</mx:Label>
おかげで、ニキータ!私は2番目のアプローチについてはわかりませんが、最初のアプローチは私が望んでいない、私が望むのは、列全体ではなく1つのセルを表示することだけです。私は2番目の方法を試し、それがうまくいくかどうかを見てみましょう。 – user76047
2番目のアプローチはまだ問題があります。実際には、特定の行の最後にいくつかのボタンを表示したいので、人々はそれをクリックする必要があります。しかし、ボタンの上にマウスを置くと、rollOutHandlerは即座に消えるようにします。 – user76047
私のソリューションを編集しましたこの状況に対処する。 – Hrundik