0

ネストされたユーザーコントロールを使用しています....

同様に: グリッド ビューを含む 'A' ユーザー コントロール、次に 'A' ともう 1 つのユーザー コントロールを含む 'B' ユーザー コントロール、次に 'B' と 2 つのユーザー コントロールを含む 'C' ユーザー コントロールがあります。 ..

'C' ユーザー コントロールに行コマンドが必要です

前もって感謝します

4

1 に答える 1

0

これを実現する方法は 2 つあります。

A コントロールのパブリック プロパティでグリッド ビューを公開します。B コントロールで、A コントロールをパブリック プロパティとして公開します。したがって、C コントロールでは、次のように記述できます。

bControl.aControl.GridProperty.OnRowCommand += youreventhandler;

または、OnInnerGridRowCommand などの A コントロールでイベントを定義し、RowCommand が発生したときにこのイベントを B コントロールに発生させることができます。B コントロールで別のイベントを定義し、A の OnInnerGridRowCommand が発生したときに、適切なパラメーターを使用してこの新しいイベントを発生させます。したがって、この新しいイベントをコントロール C で処理できます。


これは、内側のグリッドを公開する C ユーザー コントロールです。

public GridView GridView_In_C
{
    get { return innerGrid; }
}

これは、C を公開する B ユーザー コントロールです。

public CWebUserControl C_In_B
{
    get
    {
        return CWebUserControl_In_B;
    }
}

これは、B を公開する A ユーザー コントロールです。

public BWebUserControl B_In_A
{
    get
    {
        return BWebUserControl_In_A;
    }
}

これは、ユーザー コントロールをホストし、RowCommand にアタッチするページです。

public partial class HostPage : System.Web.UI.Page
{
    protected void Page_Init(object sender, EventArgs e)
    {
        AWebUserControlInHostPage.B_In_A.C_In_B.GridView_In_C.RowCommand += new GridViewCommandEventHandler(InnerGridView_RowCommand);
    }

    void InnerGridView_RowCommand(object sender, GridViewCommandEventArgs e)
    {

    }
}
于 2012-10-12T06:57:33.337 に答える