簡體   English   中英

如何確定何時在父級的子級中單擊按鈕-ASP.NET

[英]How do you determine when a button is clicked in the child on the parent - ASP.NET

在我的子用戶控件中,我具有一個帶OnRowCommand事件處理程序的gridview,該事件處理程序在單擊“編輯”按鈕時執行。 我想在子控件中單擊“編輯”按鈕時將父控件中ASP.NET占位符控件的可見性設置為true。

完成這項任務的最佳方法是什么?

更新:
經過對互聯網的更多研究之后,我在孩子控件中創建了一個公共事件Eventhandler,並在觸發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();
}

我不由自主地在子用戶控件中創建一個新事件,該事件將在OnRowCommand觸發時觸發,或者使用OnBubbleEvent-我記不清確切的名稱,但實際上是這樣。

除了冒泡事件之外,還有兩種方法值得考慮:

一種。 在您的子用戶控件中創建一個新事件。 在父控件中偵聽此事件。 在子控件中觸發此事件。

偵聽父控件中的gridview事件OnRowCommand。

方法a是優越的,因為泄漏的抽象較少。 B快速又臟,但是如果這是一次性使用的用戶控件,則不會產生負面影響。

創建事件非常容易,許多程序都包含事件模板,這意味着您所輸入的唯一內容就是事件的名稱(例如Resharper)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM