Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Последовательность обработки событий / 8 сообщений из 8, страница 1 из 1
27.07.2004, 15:54
    #32623668
podeig
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность обработки событий
Не могу понять как работает обработка событий.
Если мне по нажатию кнопки надо поменять язык страницы:

Нажимаем на кнопку
private void btnLanguage_Click(object sender, System.EventArgs e)
switch ( ddlLanguage.SelectedIndex )
{
case 0:
user.Language = "russian";
break;
case 1:
user.Language = "english";
break;
}

Как я понял порядок выполнения таков: сначала выполняется Page_Load, затем btnLanguage_Click. Получается если мне необходимо использовать новое значение user.Language в Page_Load тогда я пролетаю, потомучто оно еще не изменено функцией btnLanguage_Click.

Я предполагал что функция btnLanguage_Click должна срабатывать сразуже, после начатие на клавишу, а затем уже все остальное.

Можно ли поменять порядок выполнения, или как еще можно решить эту проблему, может у кого нибудь раньше бли аналогичные проблемы.

Спасибо за ранее!
...
Рейтинг: 0 / 0
27.07.2004, 16:23
    #32623758
Max Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность обработки событий
Чего-то я не понемаю, ведь процедура Пэйджь Лоад не сбрасывает установленных значений!
Max Pro
...
Рейтинг: 0 / 0
27.07.2004, 16:26
    #32623777
podeig
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность обработки событий
Max ProЧего-то я не понемаю, ведь процедура Пэйджь Лоад не сбрасывает установленных значений!
Max Pro
Она не сбрасывает, проблема в том что новое значение user.Language я получаю поздно. Сначало обрабатывается Page_Load, а затем функция Click, а мне надо наоборот, потомучто мне необходимо новое значение user.Language в Page_Load.
...
Рейтинг: 0 / 0
27.07.2004, 16:43
    #32623833
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность обработки событий
Действия, выполняемые в Page_Load, можно вынести в отдельный метод и вызывать его еще и в обработчике. И на что собственно влият смена языка? Многие вещи связанные с изменением состояния и внешенго вида страницы имеет смысл делать в OnPreRender, когда уже все события отработали и есть гарантия что ничего не поменяется.
...
Рейтинг: 0 / 0
27.07.2004, 17:38
    #32623986
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность обработки событий
Да это ж стандартный
if (!Page.IsPostBack) {
}

а язык в сессионной переменной храни.
...
Рейтинг: 0 / 0
27.07.2004, 17:58
    #32624050
Valery Shiskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность обработки событий
Я согласен с USTAZZ.
Если вы меняете язык, например, выбирая его из списка на форме, а затем щелкаете на кнопке btnLanguage, то в Page_load Вы видите НОВОЕ, т.е. выбранное вами значение ( и даже, при желании можете добраться до старого значения). Событие Page_Load предназначено именно для того, чтобы сделать Вам доступными заполненные поля формы. В конце концов, с самого начала Вам надо смириться с тем порядком обработки событий, который определен ASP и логику приложения строить исходя из этого. Вы могли бы, например
изменить user.Language в Page_Load и тогда в btnLanguage делать остальную обработку. Еще есть масса путей, например все делать в Page_Load. Вообщем-то большинство остальных событий и не нужны, а введены для удобства.
...
Рейтинг: 0 / 0
27.07.2004, 18:40
    #32624126
Ustazz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность обработки событий
Небольшое напоминание: При Page_Load дерево контролов построено, viewstate загружен, но обработчики еще не вызывались. В OnPreRender все обработчики вызваны, но viewstate не сохранен. Так что в момент Page_Load мы видим состояние, оставшееся с предыдущей загрузки страницы.
...
Рейтинг: 0 / 0
28.07.2004, 14:44
    #32625391
podeig
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Последовательность обработки событий
Спасибо всем за помощь! Сейчас я сделал так что скрипт вызывается по новой из btnSave_Click с помощью Response.Redirect ("default.aspx"); Значения все обновляются, а также не показывается эта нудная табличка в IE "The page cannot be refreshed without resending the information....RETRY CANCEL"
Может не совсем красивое решение, но в принципе меня устраивает :)
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Последовательность обработки событий / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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