ASP.NET VS2008 C # - выпадающий список - постбэк
-
05-07-2019 - |
Вопрос
Как использовать раскрывающийся список без autopostback = true.
Значение на сервере не изменяется в соответствии с выбранным на стороне клиента. Как я уже говорил, я не хочу, чтобы при каждом выпадающем меню автостоп возвращал пост обратно.
Решение
Каждый раз, когда я теряю значение раскрывающегося списка, это происходит из-за того, что я испортил и заново заполнил раскрывающийся список перед обработкой изменения значения. Для меня это были выпадающие списки, которые мне нужно сделать что-то особенное, например, добавить атрибуты элемента для Javascript и т. Д. Это данные, которые необходимо добавлять при каждой загрузке страницы (то есть данные, которые не сохраняются в раскрывающемся списке, как имена и значения каждого предмета). В этих случаях я выполнял эту работу при загрузке, затем я пытаюсь получить значение позже в жизненном цикле страницы и DOH!
Вот жизненный цикл страницы:
http://msdn.microsoft.com/en-us/library /ms178472.aspx р>
Доллары к пончикам, вот что происходит. Вероятно, вы просто перезагружаете элементы, прежде чем приступить к обработке любого события обратной передачи, которое вы используете для получения значения. Если вы делаете это и не можете обойти этот рабочий процесс, просто сохраните выбранный индекс в начале логики, которая заполняет раскрывающийся список, а затем установите выбранный индекс раскрывающегося списка с этим значением, когда закончите.
Другие советы
оно будет сохранено в состоянии просмотра, поэтому значение будет правильным, когда вы в конце концов отправите сообщение обратно, и если вы действительно отчаянно хотите получить текущее значение без обратной передачи, javascript будет подходящим способом сделать это. р>
В худшем случае вы можете получить значение сразу же из объекта запроса:
string selectedID = Request[DropdownControl.UniqueID];
Следует убедиться, что вы заполняете поле выбора только во время начальной загрузки страницы, а не во время обратной передачи
if (!this.Page.IsPostBack) {
//fill select box here
}