У меня есть UserControl внутри GridView.
Когда пользовательские обработчики событий присоединяются к UserControl?
Пожалуйста, скажите мне, потому что я понятия не имею.
В приведенном ниже сценарии обработчик события UserCreated имеет значение null в момент запуска события UserCreated, т.е. во время привязки данных. После полной загрузки страницы доступны обработчики событий.
UserControl
public event EventHandler UserCreated;
public event EventHandler UserSelected;
///
/// Bubble up the UserCreated event
///
protected virtual void OnUserCreated(object sender, UserCreatedArgs e)
{
EventHandler handler = UserCreated;
/*
UserCreated above is null during databinding. No handler is present
A handler is present after page has fully loaded i.e. UserCreated != null
*/
if (handler != null)
{
handler(this, e);
}
}
///
/// Raise the OnDataBindingEvent
///
protected override void OnDataBinding(EventArgs e)
{
base.OnDataBinding(e);
InitialiseControl();
}
///
/// Initialises the data in the UserControl.
///
private void InitialiseControl()
{
List userList =
UserController.GenerateUserNameDropDownList(UserGroupName);
OnUserCreated(userList);
}
Страница, на которой размещен UserControl
///
/// Handles the Load event of the Page control.
///
protected void Page_Load(object sender, EventArgs e)
{
UserCreatedHandler += UserControl.UserCreated
}
protected void UserCreatedHandler(object sender, UserControl.UserCreatedArgs e)
{
...handle userCreated event
}
Разметка для страницы
asp: GridView ID = "keyPersonnelGridView" runat = "сервер"
Колонны
жерех: TemplateField
ItemTemplate
userControl: UserName ID = "staffList" runat = "server" UserGroupName = "Все пользователи"
/ ItemTemplate
/ Жерех: TemplateField
..рест тегов закрыт
/ Жерех: GridView
Может ли какая-нибудь добрая душа объяснить, почему мои обработчики событий не присутствуют при запуске события?