powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Яйцо или курица, Page_Load или Command?
4 сообщений из 4, страница 1 из 1
Яйцо или курица, Page_Load или Command?
    #34097585
Draf Gracula
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    protected void Page_Load(object sender, EventArgs e)
    {
        InitControls();
    }

    private void InitControls()
    {
        DataBase db = new DataBase();
        LinkButton lButton = new LinkButton();
        lButton.CommandName = "Del";
        lButton.CommandArgument = db.GetNext();
        lButton.Command += LButton_Command;
        lButton.Text = "Удалить " + db.GetNext() + "?";
        Page.Controls.Add(lButton);

    }

    protected void LButton_Command(object sender, CommandEventArgs e)
    {
        DataBase db = new DataBase();
        if (e.CommandName == "Del")
            db.Delete(e.CommandArgument.ToString());
    }
Моя проблема заключается в следующем:
Когда я создаю вызовом InitControls() динамическую кнопку я задаю ей в CommandArgument код для удаления из базы данных записи.
после загрузки страницы кнопка создается, пользователь на нее нажимает, происходит вызов события Page_Load, а затем только LButton_Command, который удаляет из базы запись. Но, поскольку кнопка создалась раннее чем удалилась запись, то в CommandArgument записался код записи, который затем удалился. При следующем нажатии кнопки LButton_Command пытается удалить несуществующую запись и вызывает исключение.
Было бы замечательно вызвать LButton_Command перед Page_Load. Каким образом можно решить эту проблему?
...
Рейтинг: 0 / 0
Яйцо или курица, Page_Load или Command?
    #34097723
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В обработчике клика линкбатона заново вызвать InitControls

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Яйцо или курица, Page_Load или Command?
    #34098378
Draf Gracula
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется, что не все так просто, вот код переделаный в соответствии с Вашей идеей:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
protected void Page_Load(object sender, EventArgs e)
    {
        InitControls();
    }

    private void InitControls()
    {
        DataBase db = new DataBase();
        LinkButton lButton = new LinkButton();
        lButton.CommandName = "Del";
        lButton.CommandArgument = db.GetNext();
        lButton.Command += LButton_Command;
        lButton.Text = "Удалить " + db.GetNext() + "?";
        PlaceHolder1.Controls.Add(lButton);
    }

    protected void LButton_Command(object sender, CommandEventArgs e)
    {
	PlaceHolder1.Controls.Clear();
        
	DataBase db = new DataBase();
        if (e.CommandName == "Del")
	{
            db.Delete(e.CommandArgument.ToString());
	    InitControls();
	}
    }
Тут кнопка создается в PlaceHolder1 и в обработке зачищается (иначе создастся две кнопки), затем идет перевызов InitControls() в обработчик, как Вы и советовали.
При этом при нажатии впервый раз на кнопку происходит вызов LButton_Command(), Кнопка строится еще раз, но нажимая кнопку теперь, происходит PostBack, но в обработчик LButton_Command() больше мы не попадаем.
...
Рейтинг: 0 / 0
Яйцо или курица, Page_Load или Command?
    #34098630
Draf Gracula
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема решилась добавлением такой строки при создании кнопки:

Код: plaintext
        lButton.ID = "btn1";
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Яйцо или курица, Page_Load или Command?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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