【问题标题】:How do you determine when a button is clicked in the child on the parent - ASP.NET您如何确定何时单击父项上的子项中的按钮 - ASP.NET
【发布时间】:2009-01-15 20:36:22
【问题描述】:

在我的子用户控件中,我有一个带有 OnRowCommand 事件处理程序的网格视图,该处理程序在单击编辑按钮时执行。当在子控件中单击“编辑”按钮时,我想将父控件中的 ASP.NET 占位符控件的可见性设置为 true。

完成这项任务的最佳方法是什么?

更新:
在互联网上进行了更多研究之后,我在我的子控件中创建了一个公共事件事件处理程序,并在触发 OnRowCommand 事件时引发了该事件。在父控件的 page_load 事件中,我将子用户控件事件映射到父控件中的私有事件。

童控源代码:

public event EventHandler MyEvent;

protected void MyGridView_OnRowCommand(object sender, GridViewCommandEventsArgs e)
{
    if(MyEvent != null)
        MyEvent(sender, e);
}

家长控制源代码:

protected void Page_Load(object sender, EventArgs e)
{
    MyChildControl.MyEvent += new EventHandler(this.MyLocalEvent);
}

private void MyLocalEvent(object sender, EventArgs e)
{
    MyPlaceHolder.Visible = true;
    MyUpdatePanel.Update();
}

【问题讨论】:

    标签: c# asp.net gridview updatepanel parent-child


    【解决方案1】:

    除了冒泡事件还有两种方法值得考虑:

    一个。在您的子用户控件中创建一个新事件。在父控件中侦听此事件。在子控件中触发此事件。

    b.在父控件中监听gridview事件OnRowCommand。

    方法 a 更好,因为泄漏的抽象更少。 B 又快又脏,但如果这是一次性用户控件,则不会产生负面影响。

    创建事件相当容易,许多程序都包含事件模板,这意味着您只需键入事件名称(例如 Resharper)。

    【讨论】:

      【解决方案2】:

      我想我会在子用户控件中创建一个新事件,该事件会在 OnRowCommand 触发时触发,或者使用 OnBubbleEvent - 我不记得确切的名称,但它是这样的。

      【讨论】:

        猜你喜欢
        • 2020-12-17
        • 1970-01-01
        • 1970-01-01
        • 2019-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多