1つのdatagridcolumnを含むdatagridがあります。カスタムアイテムレンダラーがなくても、データチップ関数を使用してカスタムデータチップを表示できますが、行の色を変えるためにカスタムアイテムをレンダリングする必要があります。そのため、ラベルを拡張してデータメソッドを変更しましたが、datatip関数が機能しなくなりました。
何か案は?
前もって感謝します
セバスチャン
1つのdatagridcolumnを含むdatagridがあります。カスタムアイテムレンダラーがなくても、データチップ関数を使用してカスタムデータチップを表示できますが、行の色を変えるためにカスタムアイテムをレンダリングする必要があります。そのため、ラベルを拡張してデータメソッドを変更しましたが、datatip関数が機能しなくなりました。
何か案は?
前もって感謝します
セバスチャン
ここに cbranch によって提供されたリンクの内容をコピーします。stackoverflow は、コード スニペットを保持するための信頼性が高くなります
itemRenderer 使用時の DataTips の表示
DataGridColumn で itemRenderers を使用することの悪い点の 1 つは、通常提供される dataTip 機能が失われることです。さて、これがその機能を偽造する方法です。
まず、通常どおり、dataTipField または dataTipFunction を DataGridColumn に追加します。
<mx:DataGridColumn headerText="DataTip"
dataField="name1"
showDataTips="true"
dataTipField="description1" />
次に、itemRenderer に次のコードを追加して、その情報を利用し、代わりにツールチップを表示できるようにします。
private function getToolTip():String{
var dg:DataGrid = listData.owner as DataGrid;
var func:Function = dg.columns[listData.columnIndex].dataTipFunction;
if(func != null){
return func.call(this, this.data);
}else if(dg.columns[listData.columnIndex].dataTipField.length){
return data[dg.columns[listData.columnIndex].dataTipField];
}else{
return "";
}
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth, unscaledHeight);
this.toolTip = getToolTip();
}
これは dataTipFields と dataTipFunctions の両方で機能し、itemRenderer を使用しているかどうかに関係なく、列の dataTips を同じように扱うことができます。唯一の小さな違いはラベルの配置ですが、スタイルで簡単に変更できます。これがどのように機能するかの機能例については、ここから完全なソース コードをダウンロードできます。
私はパーティーに少し遅れましたが、画像用のカスタム DataGridItemRenderer でこの問題に遭遇しました。次のリンクで説明されている解決策は、うまくいきました。
http://www.kalengibbons.com/blog/index.php/2008/12/displaying-datatips-when-using-an-itemrenderer/
要点は、アイテム レンダーの updateDisplayList() をオーバーライドし、dataTipFunction を呼び出すか、組み込みのアイテム レンダラーと同様に dataTipField を使用してツール ヒントを設定することです。
この質問は少し古いことは知っていますが、同じ問題に遭遇し、標準の DataGridItemRenderer クラスがどのようにそれを行うかを見て解決しました。
したがって、基本的には、その toolTipShowHandler() 関数を (変更なしで) クラスにコピーし、IDropInListItemRenderer インターフェイスを実装し、レンダラーの commitProperties() 関数に数行を追加しました。これも DataGridItemRenderer に触発されたものです。
お役に立てれば。
頭のてっぺんから、カスタムアイテムレンダラーにDataGridColumnを拡張させるかもしれません。これにより、アイテムレンダラーに通常の列のすべての機能が提供されます。