0

在我的子用户控件中,我有一个带有 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();
}
4

2 回答 2

1

在我的脑海中,我要么在子用户控件中创建一个新事件,该事件将在 OnRowCommand 触发时触发,要么使用 OnBubbleEvent - 我不记得确切的名称,但它是类似的东西。

于 2009-01-15T20:40:31.140 回答
1

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

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

湾。在父控件中监听 gridview 事件 OnRowCommand。

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

创建事件相当容易,许多程序都包含事件模板,这意味着您输入的唯一内容就是事件的名称(例如 Resharper)。

于 2009-01-15T21:11:54.090 回答