powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / События динамических контролов
6 сообщений из 6, страница 1 из 1
События динамических контролов
    #34155481
Romashkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Нужна помощь в следующей проблеме:

на aspx-странице есть кнопка (Button1), по на жатии на которкю вызывается обработчик_события_Сlick,
который добавляет на страницу динамически-создаваемые контролы (CheckBox).

при добавлении этих контролов я подписываю их событие CheckedChanged к обработчику_события_onCheck и ставлю autopostback=true.

Проблема в том, что при вызове события CheckedChanged (нажатие на флажок чекбокса) делается рефреш страницы, а обработчик не срабатывает и динамически-созданные чекбоксы опять исчезают.

Вопрос: как сделать так чтобы срабатывал обработчик события этих динамических чекбоксов.

Заранее спасибо!

код:



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

    }


    protected void draw()
    {
        CheckBox newCB;
        newCB = new CheckBox();
        newCB.InputAttributes.Add("value", "somevalue");
        newCB.AutoPostBack = true;
        newCB.Text = "unchecked";
        newCB.CheckedChanged += new EventHandler(onCheck);
        form1.Controls.Add(newCB);
    }

    protected void onCheck(object sender, EventArgs e)
    {
        CheckBox cbx = (CheckBox)sender;
        cbx.Text = "checked";
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        draw();
    }
}
...
Рейтинг: 0 / 0
События динамических контролов
    #34155538
calbears
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понимаю то, что вы пытаетесь сделать сделать нельзя. Причина? Вы создаете динамические объекты в момент, когда ViewState для страницы уже создана. Т.е. - при PostBack-e только то, что находится во ViewState коллекции будет пересоздано. Чтобы то, что вы хотите сделать работало так, как вам нужно, нужно добавлять объекты динамически в событиях Page_Load или OnInit()/InitializeComponent(). Только при данных условиях динамически созданные контроллы будут пересоздаваться автоматически с сохранением событий и значений. В остальных случаях вам придется заниматься мазохизмом и создавать что то наподобие АСП-эшного ViewState-a. Или создать заранее контроллы, сделать их невидимыми и активизировать их при нажатии какой то кнопки. Но в этом случае вам заранее надо знать, сколько контролов вы будете "создавать динамически" :-).
...
Рейтинг: 0 / 0
События динамических контролов
    #34155557
RustM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, Romashkin, Вы писали:

R>Проблема в том, что при вызове события CheckedChanged (нажатие на флажок чекбокса) делается рефреш страницы, а обработчик не срабатывает и динамически-созданные чекбоксы опять исчезают.
Проблема в том, что при рефреше контролов, события которых должны были сработать, просто нет. Ты ведь их не добавил.

R>Вопрос: как сделать так чтобы срабатывал обработчик события этих динамических чекбоксов.
Запоминай (как думай сам), какие контролы ты насоздавал, и при рефреше создавай их заново.... << RSDN@Home 1.2.0 alpha rev. 668>>
...
Рейтинг: 0 / 0
События динамических контролов
    #34155586
Romashkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, RustM.

RM>Запоминай (как думай сам), какие контролы ты насоздавал, и при рефреше создавай их заново.

а какие способы запоминания существуют? просто чекбоксы генерируются на основе данных базы данных, и не хочется каждый раз на Page_Load подключаться к базе данных зря..
...
Рейтинг: 0 / 0
События динамических контролов
    #34155609
calbears
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomashkinСпасибо, RustM.

RM>Запоминай (как думай сам), какие контролы ты насоздавал, и при рефреше создавай их заново.

а какие способы запоминания существуют? просто чекбоксы генерируются на основе данных базы данных, и не хочется каждый раз на Page_Load подключаться к базе данных зря..
Session? Cache? Application?
...
Рейтинг: 0 / 0
События динамических контролов
    #34157109
antipod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, Romashkin, Вы писали:

R>Спасибо, RustM.

RM>>Запоминай (как думай сам), какие контролы ты насоздавал, и при рефреше создавай их заново.

R>а какие способы запоминания существуют? просто чекбоксы генерируются на основе данных базы данных, и не хочется каждый раз на Page_Load подключаться к базе данных зря..


Можно создать, например, массив в котором хранить ID из базы и положить в стэйт (State). А в Page_Load брать из стэйта и формировать контролы, при этом коннектится к базы не надо. Можно создать ArrayList и хранить объекты со всеми нужными данными для добавления чекбокса (ID, label, etc) в стэйте. Тут широкое поле для творчества и деятельности. Подробнее про стэйты в ASP.Net в MSDN здесь.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / События динамических контролов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]