Недавно обнаружил (и вспомнил) что у DropDownList очень неприятное поведение.
А именно, получить его SelectedValue у меня получается только в обработчике нажатия на кнопку <asp:Button.
Если же у меня на странице есть ссылка на эту же page но с параметрами в адресной строке — разумеется SelectedIndex=-1;
И я конечно же понимаю, что View.aspx и View.aspx?a=1 это разные страницы, но так хочется в PageLoad иметь значение DropDownList'а с той страницы с которой он пришел.
Что посоветуете?
Здравствуйте, skodnik, Вы писали:
S>И я конечно же понимаю, что View.aspx и View.aspx?a=1 это разные страницы, но так хочется в PageLoad иметь значение DropDownList'а с той страницы с которой он пришел. S>Что посоветуете?
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, skodnik, Вы писали:
S>>И я конечно же понимаю, что View.aspx и View.aspx?a=1 это разные страницы, но так хочется в PageLoad иметь значение DropDownList'а с той страницы с которой он пришел. S>>Что посоветуете?
L>Ну так и прочти это значение из query
А можете чуть подробнее?
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, skodnik, Вы писали:
L>>>Ну так и прочти это значение из query S>>А можете чуть подробнее?
L>Request.QueryString["a"]
Я чегото не понимаю:
а откуда в Request возьмется значение DropDownList?
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, skodnik, Вы писали:
L>>>Request.QueryString["a"] S>>Я чегото не понимаю: S>>а откуда в Request возьмется значение DropDownList?
L>Ты ж его сам передаешь: L>
L>View.aspx?a=1
Я изначально имел ввиду следующий сценарий:
страница View.aspx — мы на нее зашли
на странице есть <asp:DropDownList>
также на странице есть гиперссылка на View.aspx?а=1
Юзер в DropDownList выбирает значение и жмет на гиперссылку View.aspx?а=1.
Так вот по нажатию на гиперссылку — в PageLoad значение DropDownList.SelectedIndex = -1.
Единственный вариант — это <asp:Button по нажатию на которую я в обработчике события нажатия на эту кнопку имею возможность извлечь DropDownList.SelectedIndex.
Здравствуйте, skodnik, Вы писали:
S>Юзер в DropDownList выбирает значение и жмет на гиперссылку View.aspx?а=1. S>Так вот по нажатию на гиперссылку — в PageLoad значение DropDownList.SelectedIndex = -1.
Конечно. Откуда там возмется другое значение?
S>Единственный вариант — это <asp:Button по нажатию на которую я в обработчике события нажатия на эту кнопку имею возможность извлечь DropDownList.SelectedIndex.
Ну, то что он единственный — это слишком сильно сказано. Можно и не только button влепить, пожно и на клиенте подменять url у ссылки при выборе значения в DropDown-е. Много чего можно придумать.
Здравствуйте, skodnik, Вы писали:
S>Я изначально имел ввиду следующий сценарий: S>страница View.aspx — мы на нее зашли S>на странице есть <asp:DropDownList> S>также на странице есть гиперссылка на View.aspx?а=1 S>Юзер в DropDownList выбирает значение и жмет на гиперссылку View.aspx?а=1. S>Так вот по нажатию на гиперссылку — в PageLoad значение DropDownList.SelectedIndex = -1. S>Единственный вариант — это <asp:Button по нажатию на которую я в обработчике события нажатия на эту кнопку имею возможность извлечь DropDownList.SelectedIndex.
А можно спросить, зачем гиперссылка на туже страницу? Почему бы вам не использовать asp:LinkButton и постбек, раз так нужны текущие значения контролов страницы?
Здравствуйте, skodnik, Вы писали:
S>Здравствуйте, Lloyd, Вы писали:
L>>Здравствуйте, skodnik, Вы писали:
L>>>>Ну так и прочти это значение из query S>>>А можете чуть подробнее?
L>>Request.QueryString["a"] S>Я чегото не понимаю: S>а откуда в Request возьмется значение DropDownList?
Ну, так положи его туда
На клиенте, правда, это трудоемко. Придется при каждом изменении модидифицировать ссылки.
Лучше всего по нажатию на ссылку сделать постбэк, на постбэке сформировать ссылку с параметром и выполнить редирект.