C # - Использование ListBox для заполнения других полей - PullRequest
0 голосов
/ 29 октября 2009

Я пытаюсь использовать выбранное значение элемента управления ListBox для заполнения TextBox с его свойством Text и HiddenField с его свойством value. Это звучит достаточно просто, и я пошел с этим:

currentGroupTextBox.Text = currentSiteGroupList.SelectedItem.Text;
currentGroupHiddenField.Value = currentSiteGroupList.SelectedValue;

Но при выполнении ASP.NET возвращает ошибку:

Object reference not set to an instance of an object.

И выделяет первую строку. currentGroupTextBox и currentGroupHiddenField - это два элемента управления, которые включены в файл ASPX, поэтому я не очень уверен, почему ASP.NET будет жаловаться на их создание.

Ответы [ 4 ]

1 голос
/ 29 октября 2009

Я собираюсь собрать воедино ответы на все ваши вопросы, в том числе и в комментариях.

  1. Даже если SelectionMode="Single", список начинается без выбора, если только вы не указали, какой элемент должен быть выбран в вашем коде.

  2. Чтобы проверить, является ли SelectedItem нулевым, используйте следующий код:

if (currentGroupSiteList.SelectedItem != null) {
    currentGroupTextBox.Text = currentSiteGroupList.SelectedItem.Text;
    currentGroupHiddenField.Value = currentSiteGroupList.SelectedValue;
}
  1. Как выглядит ваш код Page_Load, который загружает список? Это завернуто с проверкой if (!Page.IsPostBack)? В противном случае нажатие кнопки и инициирование обратной передачи перезагрузит список, тем самым потеряв выбранный элемент, выбранный пользователем.
1 голос
/ 29 октября 2009

SelectedItem из вашего currentSiteGroupList.SelectedItem, вероятно, будет нулевым (что не представляет выбора). Вам необходимо проверить его перед назначением для currentGroupTextBox.Text

1 голос
/ 29 октября 2009

Я бы поспорил, что ваша первая строка задыхается от ссылки currentSiteGroupList.SelectedItem, так как это кажется наиболее вероятным кандидатом на нулевую ссылку. Убедитесь, что ваш код выполняется в нужном месте в жизненном цикле страницы ASP.NET, чтобы SelectedItem был правильно установлен за кулисами.

0 голосов
/ 29 октября 2009

Это значение null для currentGroupTextBox или currentGroupTextBox? В отладке, если остановиться на этой строке .. это один или оба, которые не существуют? Общая проблема, которую я нахожу, заключается в том, что элементы управления помещаются в форму просмотра asp или аналогичную, поэтому ссылка на этот элемент управления на самом деле не является его идентификатором / именем, но, скорее всего, вам нужно это сделать;

TextBox myTextBoxReference = (TextBox) formName.FindControl("currentGroupTextBox")
string theValue = myTextBoxReference.Text

Другая часто встречающаяся проблема - это жизненный цикл страницы. Поэтому, если ваш объект не находится в форме, но, возможно, вы ссылаетесь на него до того, как он появится в обратной передаче. НТН

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