2011-01-12 3 views
1

Я опишу свою проблему простым способом, так что это не совсем то, что я пытаюсь сделать, но идея такая же. Вот проблема:
Я создаю динамические кнопки из кода .I получить некоторый идентификатор из строки запроса, создать кнопку с этим идентификатором, динамически добавлять обработчик событий, чтобы щелкнуть событие, и добавить кнопку в placeholder.I сохранить список id-s в сеансе и в режиме загрузки страницы воссоздать эти кнопки и добавить к placeholder.One ид-е является CurrentId и это также хранится в session.Buttons нажми обработчик сделать что-то вроде этогоОбработчик события нажатия кнопки до загрузки страницы

Button b=(Button)sender; 
Session["CurrentId"]=Convert.ToInt32(b.ID); 

в загрузке страницы, когда я создаю кнопки я хочу, чтобы установить текстовое свойство отличается от других s, если id==Convert.ToInt32(Session["CurrentId"]), когда список идентификаторов отправлен с сеанса. Но проблема в том, что обработчик события click вызывается после загрузки страницы, а когда я создаю кнопки в загрузке страницы, CurrentId в сеансе не был передан обработчиком события click.Can вы предлагаете какое-либо решение этой ситуации?

ответ

1

Похоже, вы пытаетесь обновить кнопки, которые вы динамически создали после того, как произошло событие щелчка. Почему бы просто не изменить текст кнопки в событии клика, как вы описали?

т.е.

protected void button_Clicked(object sender, EventArgs e) 
{ 
    ((Button)sender).Text = "Custom text for active button"; 
} 

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

+0

спасибо, PreRender - это решение. – unknown

+1

@unknown: Убедитесь, что вы правильно изучили жизненный цикл страницы ASP .Net, это бесценное знание для этих проблем. Используйте аккорды «SILVER», чтобы легко запомнить этапы. Вы можете прочитать об этом здесь: http://www.codeproject.com/KB/aspnet/ASPNET_Page_Lifecycle.aspx –

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