0

我正在使用嵌套用户控件....

比如:我有一个包含网格视图的“A”用户控件,然后是一个包含“A”和一个用户控件的“B”用户控件,然后是一个包含“B”和另外 2 个用户控件的“C”用户控件。 ..

我想要'C'用户控件中的行命令

提前致谢

4

1 回答 1

0

这里有两种方法可以实现这一目标。

使用 A 控件中的公共属性公开网格视图。在您的 B 控件中,将 A 控件公开为公共属性。因此,在您的 C 控件中,您可以编写类似

bControl.aControl.GridProperty.OnRowCommand += youreventhandler;

或者,您可以在 A 控件上定义一个事件,例如 OnInnerGridRowCommand,并在 RowCommand 发生时将此事件引发到 B 控件。在 B 控件中定义另一个事件,并在 A 的 OnInnerGridRowCommand 发生时使用适当的参数引发这个新事件。所以你可以在控件 C 中处理这个新事件。


这是暴露内部网格的 C 用户控件

public GridView GridView_In_C
{
    get { return innerGrid; }
}

这是 B 用户控件暴露 C

public CWebUserControl C_In_B
{
    get
    {
        return CWebUserControl_In_B;
    }
}

这是一个暴露 B 的用户控件

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 回答