События контрола, созданного динамически
От: mymus Украина  
Дата: 17.07.05 07:50
Оценка:
Привет,

возник такой вот чайниковский вопрос:

У меян есть несколько контролов типа LinkButton. Поскольку их кол-во и свойства в design-time мне неизвестны, приходиться их генерить в run-time из codebehind. Вообще говоря, эти контролы предназначены для управления DataGrid (типа, расширение Пейджера).

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

Отсюда вопрос: как c этим бороться?

Зарание спасибо всем ответившим.


PS: C#, VS2003, .NET 1.1.4322SP1

// Вот так я генерирую LinkButton и добавляю его на страницу
LinkButton lb       = new LinkButton();
lb.Text             = i.ToString();
lb.ID               = "lb_" + lb.Text;
lb.CssClass         = "PageLinks";
lb.CausesValidation = true;
lb.EnableViewState  = true;
lb.Visible          = true;
lb.CommandName      = lb.Text;
lb.Command         += new CommandEventHandler(this.NavigationLink_Click);
PagerPanel.Controls.Add(lb);

// ...
// А вот так пытаюсь его обрабатывать
protected void NavigationLink_Click(object sender, CommandEventArgs e)
{
    switch (e.CommandName) 
    // ...
}
RE: События контрола, созданного динамически
От: Аноним  
Дата: 17.07.05 10:34
Оценка:
А где именно добавляются на страницу кнопки? Весь код вообщем в студию.
Ну а для пейджера можно глянуть это и это.
Раб, который обожает своего хозяина, уже не раб, а холуй.
В.И. Ульянов.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: События контрола, созданного динамически
От: Аноним  
Дата: 17.07.05 17:43
Оценка:
Здравствуйте, mymus, Вы писали:

M>Привет,


M>возник такой вот чайниковский вопрос:


M>У меян есть несколько контролов типа LinkButton. Поскольку их кол-во и свойства в design-time мне неизвестны, приходиться их генерить в run-time из codebehind. Вообще говоря, эти контролы предназначены для управления DataGrid (типа, расширение Пейджера).


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


M>Отсюда вопрос: как c этим бороться?


M>Зарание спасибо всем ответившим.



M>PS: C#, VS2003, .NET 1.1.4322SP1


M>
M>// Вот так я генерирую LinkButton и добавляю его на страницу
M>LinkButton lb       = new LinkButton();
M>lb.Text             = i.ToString();
M>lb.ID               = "lb_" + lb.Text;
M>lb.CssClass         = "PageLinks";
M>lb.CausesValidation = true;
M>lb.EnableViewState  = true;
M>lb.Visible          = true;
M>lb.CommandName      = lb.Text;
M>lb.Command         += new CommandEventHandler(this.NavigationLink_Click);
M>PagerPanel.Controls.Add(lb);

M>// ...
M>// А вот так пытаюсь его обрабатывать
M>protected void NavigationLink_Click(object sender, CommandEventArgs e)
M>{
M>    switch (e.CommandName) 
M>    // ...
M>}
M>


Может ты его не подключаешь повторно после отправки постбека ??
Re[2]: События контрола, созданного динамически
От: mymus Украина  
Дата: 18.07.05 17:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Может ты его не подключаешь повторно после отправки постбека ??


Ага, значит, если я верно понял, для правильной обработки событий мне необходимо всегда (в том числе при постбеках) подключать обработчики. Для компонент, которые сгенерированы дизайнером, Студия кидает это в InitializeComponent(). Но тогда вопрос другой: что делать если у меня в момент, когда выполняется InitializeComponent() еще не известно кол-во этих контролов и их свойства. Они станут известными только после выполнения запроса к БД. А метод, который это (запрос) сделает, сам вызывается из колбека. Замкнутый круг

-an
Re[3]: События контрола, созданного динамически
От: Аноним  
Дата: 18.07.05 17:43
Оценка:
Здравствуйте, mymus, Вы писали:

M>Здравствуйте, Аноним, Вы писали:


А>>Может ты его не подключаешь повторно после отправки постбека ??


M>Ага, значит, если я верно понял, для правильной обработки событий мне необходимо всегда (в том числе при постбеках) подключать обработчики. Для компонент, которые сгенерированы дизайнером, Студия кидает это в InitializeComponent(). Но тогда вопрос другой: что делать если у меня в момент, когда выполняется InitializeComponent() еще не известно кол-во этих контролов и их свойства. Они станут известными только после выполнения запроса к БД. А метод, который это (запрос) сделает, сам вызывается из колбека. Замкнутый круг


M>-an

Понял верно.
Ну не обязательно же подключать обработчики в InitializeComponent. Подключить обработчик надо до того, как закончит выполняться Page_Load, так как попытка вызвать обработчик возникает именно после ее окончания. А где именно ты его подключишь — не важно.
Re[3]: События контрола, созданного динамически
От: Аноним  
Дата: 18.07.05 21:57
Оценка:
Очень удобное место для всяких действий — OnPreRender. Всё уже сформировано, инициализировано...
----
В моём WMP


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.