2009-06-03 2 views
5

Я хочу иметь пользовательский элемент управления, содержащий кнопку сохранения.Обработка событий управления пользователями на странице

Я хочу, чтобы событие щелчка прикрепленного к кнопке сохранения будет обрабатываться содержащей страница не управления пользователем

Возможно ли это?

EDIT БОЛЕЕ КОНКРЕТНЫЕ

Скажем, у меня есть страница под названием «Редактор страниц» и пользовательский элемент управления под названием «Редактор кнопок». На пользовательском элементе «Редактор кнопок» У меня есть кнопка сохранения (которая является веб-элементом управления). Я хочу, чтобы событие Click из кнопки сохранения обрабатывалось на странице «Редактор», а не на пользовательском элементе управления.

Причина этого в том, что я хочу указать базовые страницы, которые реализуют обычное поведение.

ответ

4

Предполагаю, что у вас есть код для UserControl. Если это так, вы можете определить событие «Сохранить» в своем пользовательском элементе управления и показать ему событие «Щелчок» кнопки сохранения, either directly или внутреннюю настройку обработчика событий и поднять событие «Сохранить» при нажатии кнопки. Это может выглядеть примерно так в UserControl:

public event EventHandler Save; 

private void SaveButton_Click(object sender, EventArgs e) 
{ 
    OnSave(e); 
} 

protected void OnSave(EventArgs e) 
{ 
    // raise the Save event 
    EventHandler save = Save; 
    if (save != null) 
    { 
     save(this, e); 
    } 
} 
4

Этот метод обычно называют «пузырьковым событием».

Вот exmple:

public partial class Test : System.Web.UI.UserControl 

{ 

public event EventHandler buttonClick; 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    buttonClick(sender, e); 
} 

} 

Затем вы можете подписаться на событие ButtonClick на веб-странице для отображения различной информации.

public partial class Test: System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 

UserControlID.buttonClick+=new EventHandler(UserControlID_buttonClick); 

} 

protected void UserControlID_buttonClick(object sender, EventArgs e) 
{ 
    Response.Write("hello,I am jack."); 
} 

} 
1

UserControl1.ascx

UserControl1.ascx.cs

общественный частичный класс UserControl1: System.Web.UI.UserControl

{

public event EventHandler UserControl1Click; 



protected void Page_Load(object sender, EventArgs e) 

{ 

} 



protected void btn1_Click(object sender, EventArgs e) 

{ 

    UserControl1Click(sender, e); 

} 

}

UserControl2.ascx

UserControl1.ascx.cs

общественного частичного класса UserControl2: System.Web.UI.UserControl

{

public event EventHandler UserControl2Click; 



protected void Page_Load(object sender, EventArgs e) 

{ 

} 




protected void btn2_Click(object sender, EventArgs e) 

{ 

    UserControl2Click(sender, e); 

} 

}

Затем добавьте одно текстовое поле Asp.Net (для отображения идентификатора пользовательского элемента управления) и над двумя пользовательскими элементами управления на страницу Aspx, как показано ниже.

<title>Untitled Page</title> 

<form id="form1" runat="server"> 



<div> 



<asp:TextBox ID="txt1" runat="server"></asp:TextBox> <br /> 



<UC1:UC ID="uc1" runat="server" /> 



<UC1:UC ID="uc2" runat="server" /> 



</div> 



</form> 

Теперь добавьте обработчик событий для каждого пользовательского элемента управления для обработки события нажатия кнопки из двух элементов управления, как показано ниже.

общественного класса _Default парциальное: System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e) 

{ 

    uc1.UserControl1Click += new EventHandler(uc1_UserControl1Click); 

    uc2.UserControl2Click += new EventHandler(uc2_UserControl2Click); 

} 



protected void uc1_UserControl1Click(object sender, EventArgs e) 

{ 

    txt1.Text = "User Control 1 Clicked"; 

} 



protected void uc2_UserControl2Click(object sender, EventArgs e) 

{ 

    txt1.Text = "User Control 2 Clicked"; 

} 

}

Если мы нажмем Control1 пользователя, текстовое поле отображает «Управление учетными 1 была нажата кнопка» или если мы нажимаем на User Control2, в текстовом поле отображается «User Control 2 Clicked».

Смежные вопросы