2009-01-15 33 views
0

在我的子級用戶控件中,我有一個帶有OnRowCommand事件處理程序的GridView,該事件處理程序在單擊「編輯」按鈕時執行。我想在父級控件中單擊「編輯」按鈕時,將父級中ASP.NET佔位符控件的可見性設置爲true。你如何確定何時在父級上的子級上單擊按鈕 - ASP.NET

什麼是完成此任務的最佳方法?

更新:
在互聯網絡多一點研究,我在我的子控件創建一個公共事件的事件處理程序和rasied事件時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(); 
} 

回答

1

有兩種方法除了鼓泡值得考慮的事件外:

a。在你的孩子用戶控件中創建一個新事件。在父控制中收聽此事件。在子控件中觸發此事件。

b。收聽父控件中的gridview事件OnRowCommand。

方法a更勝一籌,因爲抽象的泄漏較少。 B是快速和骯髒的,但如果這是一次性使用用戶控制,它不會產生負面影響。

創建事件相當容易,很多程序都包含事件模板,這意味着他們只有鍵入的內容纔是事件的名稱(例如Resharper)。

1

關閉我的頭頂,我就可以創建子用戶控件中的一個新的事件,將激發關閉當OnRowCommand觸發時,或使用OnBubbleEvent時 - 我記不清確切的名字,但它是這樣的。

相關問題