2012-02-29 6 views
0

私はASP.NET/C#で実装されたストアを持っています。製品 - BuyTourProduct - を表示するコントロールと、製品の詳細を表示する別のコントロール - TourProductDetailを持つページ - ReservationProduct.aspxがあります。別のコントロールからユーザーコントロールにアクセスする

私はそれがデカップリングされた2つの状態を保つのがよいことを知っていますが、これは非常に特定の店舗での使用のためです。 BuyTourProductは、コントロールのパネルを表示するかどうかをPanelName.Visible=true|falseで設定できるようにします。

他のコントロールのパネルに1つのコントロールセット属性を設定するにはどうすればよいですか?私はこれを十分に明確に言いたいと思います。

ところで、これは第3の製品コントロールの2つで、2つの別々のコントロールであるという事実を変更するものです。

ありがとうございました。

答えて

1

UserControlのコンテキストでは、ユーザーコントロールは他のUserControlまたはその内容を認識しません。ページは両方のコントロールを認識しているため、ページコンテキストでコントロールと対話する必要があります。 BuyTourProduct制御から発射

  • イベント:

    あなたは二つのものが必要になります。

  • TourProductDetailコントロールのPanelNameと対話する方法。

イベントが既に存在する場合は、それを使用してください。それ以外の場合は、BuyTourProductのソースを変更してイベントを公開し、そのイベントをそのコード内で発生させる必要があります。次に、コントロール内からこのイベントを呼び出すこともできます。

public class BuyTourProduct : UserControl 
{ 
    // ... 

    public delegate void MyHideEventDelegate(); 
    public event MyHideEventDelegate MyHideEvent; 

    // ... 

    public void SomeFunction() 
    { 
     if (MyHideEvent != null) 
      MyHideEvent(); 
    } 

    // ... 
} 

次に、あなたがTourProductDetail内部PanelNameと対話するためのメソッドを追加する必要があります:

public class TourProductDetail : UserControl 
{ 
    // ... 

    private Panel PanelName; 

    // ... 

    public void SetPanelNameVisible(Boolean visible) 
    { 
     PanelName.Visible = visible; 
    } 

    // ... 
} 

ページから、あなたがしたいイベントやMyHideEventに加入します:

public partial class ReservationProduct : System.Web.UI.Page 
{ 
    // ... 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     buyTourProduct.MyHideEvent += new BuyTourProduct.MyHideEventDelegate(buyTourProduct_MyHideEvent); 
    } 

    // ... 

    void buyTourProduct_MyHideEvent() 
    { 
     tourProductDetail.SetPanelNameVisible(false); 
    } 

    // ... 
} 
+0

サンプルコードありがとうございます。それは多くの助けになります! – Deverill

2

ユーザーコントロール内にイベントを書き込む方が良いです。BuyTourProduct(例:製品の詳細を更新する必要があります) このイベントでは、コントロールを配置するページで処理できます。

TourProductDetailコントロールでは、パブリックプロパティを記述してパネルを非表示にすることができます。

したがって、上記のページのBuyTourProductイベントハンドラのイベントハンドラでは、TourProductDetailコントロールのShowHidePanelプロパティを呼び出します。

+0

+1私はまだOOPではなくリニアプログラムフローコーダのように思っています。あなたの方法をありがとう。 – Deverill

関連する問題