在我的子用户控件中,我有一个带有OnRowCommand事件处理程序的gridview,在单击“编辑”按钮时执行该操作。我想在子控件中单击“编辑”按钮时将父级中的ASP.NET占位符控件的可见性设置为true。
完成此任务的最佳方法是什么?
更新
在对互联网进行了一些研究之后,我在我的子控件中创建了一个公共事件Eventhandler,并在OnRowCommand事件被触发时对事件进行了rasied。在我父控件的page_load事件中,我将子用户控件事件映射到父控件中的私有事件。
Child Control源代码:
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();
}
答案 0 :(得分:1)
在我的脑海中,我会在子用户控件中创建一个新的事件,当OnRowCommand触发时会触发,或者使用OnBubbleEvent - 我不记得确切的名字,但它就是这样的。
答案 1 :(得分:1)
除了鼓励事件值得考虑外,还有两种方法:
一个。在子用户控件中创建一个新事件。在父控件中侦听此事件。在子控件中触发此事件。
湾在父控件中监听gridview事件OnRowCommand。
接近a是优越的,因为通过泄漏的抽象较少。 B快速而且脏,但如果这是一次性使用用户控件,则不会产生负面影响。
创建事件相当容易,许多程序包含事件模板,这意味着他们只输入事件的名称(例如Resharper)。