Как я могу запросить выбранное значение в выпадающем списке в ASP.net после публикации? - PullRequest
1 голос
/ 17 декабря 2010

У меня есть поле со списком на веб-форме. Пользователь может выбрать одно значение в списке. Когда нажата кнопка «Сохранить», он должен отправить сообщение. Среди выпадающего списка есть несколько других элементов управления, таких как текстовые поля. Когда я пытаюсь зачитать опубликованную информацию, я не могу найти / получить доступ к выбранному значению списка. Я могу, однако, прочитать значения из текстовых полей просто отлично.

Вот строка кода, которую я использую, чтобы прочитать информацию:

project.CustomerId = Convert.ToInt32(
    Request.Form["ctl00$MainContent$uxCustomerComboBox$HiddenField"]);

Заранее спасибо.

Редактировать 1 : Так создается комбо-бокс (имейте в виду, что он внутри таблицы):

<asp:ComboBox ID="uxCategoryComboBox" 
              runat="server" 
              DropDownStyle="DropDownList" 
              AutoCompleteMode="SuggestAppend">

Вот как я пытаюсь прочитать фактическое значение в выпадающем списке:

uxCategoryComboBoxId.Value = uxCategoryComboBox.SelectedItem.Value;

Редактировать 2 : Вот как мы пытались прочитать SelectedValue с помощью обработчика событий во время отладки:

<asp: DropDownList ID="uxCategoryComboBox" runat="server" EnableViewState="true" OnSelectedIndexChanged="setIndex" AutoPostBack="true">
</asp: DropDownList>

Это метод setIndex:

protected void setIndex(object sender, EventArgs e)
{
    _project[0].CategoryId = Convert.ToInt32(uxCategoryComboBox.SelectedValue);
}

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Если все элементы управления являются runat = "server" с уникальными идентификаторами, то вы можете просто получить к нему доступ непосредственно в коде позади.

0 голосов
/ 17 декабря 2010

Вам не нужно использовать автоматически сгенерированные контрольные идентификаторы (например, ctl00$MainContent$uxCustomerComboBox$HiddenField) в выделенном фрагменте кода или обращаться к объекту Request.Form.Правильный способ получить значение элемента управления раскрывающегося списка - через свойство SelectedValue.Поэтому я думаю, что вы должны просто сделать это:

project.CustomerId = Convert.ToInt32(this.uxCategoryComboBox.SelectedValue);

Редактировать:

Я только что понял, что вы используете элемент управления ComboBox,не стандарт DropDownList.ComboBox не является стандартным элементом управления ASP.NET (насколько я знаю), поэтому может быть, что отключение ViewState вызывает эту проблему.

Для комбо-эффекта необходимо какое-то «состояние».поле должно быть правильно заполнено во время обратных передач.Стандартные элементы управления ASP.NET используют ControlState, поэтому они будут работать до некоторой степени при отключении ViewState.Возможно, используемый вами элемент управления ComboBox полностью зависит от ViewState, поэтому я бы попробовал включить его либо для всей страницы, либо только для этого элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...