Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Проблемма обработчиков событий OnSelectedIndexChanged в DropDownList

Ответить
Настройки темы
.NET - Проблемма обработчиков событий OnSelectedIndexChanged в DropDownList

Старожил


Сообщения: 222
Благодарности: 1

Профиль | Отправить PM | Цитировать


Есть ASP.NET страница которая содержит в себе 3 DropDownList

Код: Выделить весь код
<asp:DropDownList ID="ddlHour" runat="server" class="maxiSelect" AutoPostBack="true" OnLoad="ddlHour_OnLoad" OnSelectedIndexChanged="ddlHour_OnSelectedIndexChange" />
<asp:DropDownList ID="ddlMinute" runat="server" class="miniSelect" AutoPostBack="true" OnLoad="ddlMinute_OnLoad" OnSelectedIndexChanged="ddlMinute_OnSelectedIndexChange"/>                     
<asp:DropDownList ID="ddlSecond" runat="server" class="miniSelect" OnLoad="ddlSecond_OnLoad" AutoPostBack="true" OnSelectedIndexChanged="ddlSecond_OnSelectedIndexChanged"/>
И есть код-бихайнд который обрабатывает события этих листов, следующего вида
Код: Выделить весь код
 
protected void ddlHour_OnSelectedIndexChange(object sender, EventArgs e)
{
             using (DropDownList dropDownList = sender as DropDownList)
            {
                    if (dropDownList != null)
                            Response.Redirect(WebQueryOperations.ModifyQuery(Request, "Hour", dropDownList.SelectedIndex));
            }
}

protected void ddlMinute_OnSelectedIndexChange(object sender, EventArgs e)
{
           using (DropDownList dropDownList = sender as DropDownList)
           {
                   if (dropDownList != null)
                          Response.Redirect(WebQueryOperations.ModifyQuery(Request, "Minute", dropDownList.SelectedIndex));
           }
}

protected void ddlSecond_OnSelectedIndexChanged(object sender, EventArgs e)
{
         using (DropDownList dropDownList = sender as DropDownList)
         {
                if (dropDownList != null && dropDownList.SelectedIndex != 60)
                         Response.Redirect(WebQueryOperations.ModifyQuery(Request, "Second", (sender as DropDownList).SelectedValue));
                else
                        Response.Redirect(WebQueryOperations.ModifyQuery(Request, "Second", 60));
         }
}
Метод ModifyQuery изменяет строку запроса в соответствии с выбранными значения листов, возвращает адрес текущей страницы+измененную строку запроса и происходит редирект по этому адресу.
Проблема заключается в том что если мы сперва меняем значение в листе ddlHour тем самым вызывая обработчик ddlHour_OnSelectedIndexChange, то при изменении значений остальных двух листов для них все ровно вызывается обработчик ddlHour_OnSelectedIndexChange. Что не так сделано и как это можно исправить?

-------
Подпись, нарушающая правила конференции, отредактирована администратором


Отправлено: 00:30, 23-11-2011

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Ну конечно он вызывается, ты же полностью перегружаешь страницу, следовательно индекс меняется на первоначальный. Задача какая стоит? Зачем делать перегрузку страницы после изменения каждого поля? Может быть имеет смысл перегружать по нажатию кнопки, либо выставить autopostback только у секунд, например.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 01:10, 23-11-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 222
Благодарности: 1

Профиль | Отправить PM | Цитировать


Дело вот еще в чем, я переделал этот код и сделал 1 общий обработчик для всех листов, но теперь еще проблемма в том что кнопка Submit у которой есть событие ОнКлик, не вызывает его, а этот обработчик листов.

Да и если убрать с обработчика редирект всеровно он вызывается.

-------
Подпись, нарушающая правила конференции, отредактирована администратором


Последний раз редактировалось DaRiYs, 23-11-2011 в 01:56.


Отправлено: 01:49, 23-11-2011 | #3


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


DaRiYs, ниче не понял, из того, что ты написал. 4 раза перечитал, не въехал, что куда когда и где не обновляется. И сама задача так и не была озвучена.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 03:16, 23-11-2011 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - Проблемма обработчиков событий OnSelectedIndexChanged в DropDownList

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Репликация событий Artuha Microsoft Windows NT/2000/2003 2 11-07-2011 12:16
Разное - Просмотр событий Berkyt Microsoft Windows 2000/XP 1 07-11-2007 12:21
Журнал событий Vygov Microsoft Windows 95/98/Me (архив) 1 23-07-2007 01:54
Аудит событий GreenIce Microsoft Windows NT/2000/2003 0 14-05-2007 22:40




 
Переход