2011-01-23 2 views
0

私はコンテキストメニューとして使用しているlinkbuttonを含むmx:TitleWindowに基づいてコンポーネントを作成しました。テキストをデータ駆動型とし、フロントエンドから視認性を制御するリンクボタンを作成するにはどうすればよいですか?

TitleWindowの成分は、このようなリンクボタンを含む:

[Bindable] 
private var _showEmailThis:Boolean = false; 

[Bindable] 
private var _showApproveThis:Boolean = false; 

[Bindable] 
private var _showReviewThis:Boolean = false; 

<mx:LinkButton id="lnkEmailThis" 
       visible="{_showEmailThis}" 
       includeInLayout="{_showEmailThis}" 
       click="lnkEmailThis_click()" 
       label="Email this!" /> 

<mx:LinkButton id="lnkApproveThis" 
       visible="{_showApproveThis}" 
       includeInLayout="{_showApproveThis}" 
       click="lnkApproveThis_click()" 
       label="Approve this!" /> 

<mx:LinkButton id="lnkReviewThis" 
       visible="{_showReviewThis}" 
       includeInLayout="{_showReviewThis}" 
       click="lnkReviewThis_click()" 
       label="Review this!" /> 

このコンポーネントは、多数のリンクが含まれており、同じアプリケーション内の複数のモジュールによって再利用されます。

このコンポーネントは、各モジュール内で、ユーザーがデータグリッド内の行をクリックするときに使用されます。

コードは次のようになります。

"要求" モジュールで、 "パフォーマンス" モジュールでは

private function dgRequests_click(event:MouseEvent):void 
{ 
    menu.showApproveThis = true; 
    menu.showReviewThis = true; 
} 

private function dgPerformance_click(event:MouseEvent):void 
{ 
    menu.showEmailThis = true; 
    menu.showReviewThis = true; 
} 

個々linkbuttonsの可視性、あなたが見ることができるようにブール値のプロパティを設定することにより、各モジュール内で制御されます。

レンダラを使用するようにこのコンポーネントを変更した場合、各モジュールのコードからリンクボタンの表示を制御するにはどうすればいいですか(リンクが100以上あり、各モジュールでリンクが使用されるわけではありません) ? 注:どのモジュール内のどのグリッドがどのリンクを使用しているかは、バックエンドからはわかりません。これは、各モジュールのactionscriptファイル内のフロントエンドで設定されます。例えば

、XMLは次のように見える場合:

<links> 
    <link> 
     <label>Email This</label> 
     <visible>_showEmailThis</visible> 
    </link> 
    <link> 
     <label>Approve This</label> 
     <visible>_showApproveThis</visible> 
    </link> 
    <link> 
     <label>Review This</label> 
     <visible>_showReviewThis</visible> 
    </link> 
</links> 

と私はこのようなモジュールに表示する電子メールのリンクを設定します。

private function dgPerformance_click(event:MouseEvent):void 
{ 
    menu.showEmailThis = true; 
} 

は、どのように私はそれを有効にするのですか?コンポーネント内のアイテムレンダラー内のリンクボタンの可視性を、そのコンポーネントを使用するモジュールから制御する方法はありますか?

答えて

0

このようには見えません。

1

私は本当にあなたの質問を理解しているか分からない。しかし、コンポーネント(またはそれらのグループ)が異なるプロパティの値で何度も繰り返している場合は、mx:Repeaterを使用する必要があります。

Adob​​eのdocs on Repeater

(私は強くインストールして使用することをお勧めします)TourDeFlexでのライブの例もあります。

+0

返信いただきありがとうございます。Nek。私はリピーターとアイテムレンダラーのリストを使用しました。それは難しいことではありません。コンポーネントには、各リンクを表示するかどうかを制御するブール値のプロパティがあります。特定のリンクを表示するには、そのリンクに対応するコンポーネントのプロパティがモジュールでtrueに設定されます(質問のclickイベントを参照)。これを考慮すると、このコンポーネントをデータ駆動型にすることは可能ですか?何らかの形でデータソースからコンポーネント内のブール値を設定する必要があります。 – Zesty

+1

[]を使用してプロパティにアクセスできます。 yourComponent ["_ showEmailThis"] = true; ポイントをもう一度見逃している場合は、もう少しタスクを明確にしてください。 :) – Nek

+0

もう一度お手伝いをしてくれてありがとう。私は何を達成しようとしているのかを明確にするために質問を書き直しました。おそらく、前に明らかになっていないことは、モジュールがどのリンクをどのグリッドで使用しているかをバックエンドが(パフォーマンス上の理由で)知らないことです。これは、各モジュールのactionscriptファイル内で設定されます。したがって、このデータはXMLに現れません。コンポーネントのプロパティは、各モジュールによって設定されます。だから、どのようにコンポーネントを使用するモジュールから、コンポーネントのレンダラー内のリンクボタンの可視性を制御することができますか? – Zesty

関連する問題