DropDownList позволяет установить DataSource, но ошибка в DataBind

У меня есть элемент управления выпадающим списком.

<asp:DropDownList runat = "server" ID = "ddlMarketerContract" CssClass = "form-control" />

Я установил DataSource в коде программной части, используя LINQ и EF.

ddlMarketerContract.DataSource = context.Table.Select(x => x.ColumnName).Distinct().ToList();

Но при выполнении отладки, когда я перехожу к привязке данных

ddlMarketerContract.DataBind();

Я получаю сообщение об ошибке «Ссылка на объект не указывает на экземпляр объекта».

Не уверен, почему он позволяет мне установить DataSource, но не находит объект при привязке элемента управления.

У меня есть аналогичная настройка на другой странице, но она работает так, как ожидалось. Я подумал, может быть, это потому, что у меня нет набора DataTextField/DataValueField, но на другой странице их не было, и он все еще работал нормально.

Вы уверены, что для DataSource задан список, который вы ожидаете? Можем ли мы увидеть код с немного большим контекстом? Вы вызываете DataBind сразу после DataSource?

mclark1129 28.05.2019 17:28

Да, LINQ возвращает нужный набор данных. Во время отладки, после настройки источника данных, если я разверну элемент управления раскрывающимся списком и посмотрю на его источник данных, я увижу около 35 результатов. Это не сразу. Я установил источник данных нескольких раскрывающихся списков в блоке «Использование», а затем привязал их после закрытия блока. Однако я попытаюсь переместить команду связывания в блок сразу после установки источника данных.

toadfromgrove 28.05.2019 17:32

Перемещение команды DataBind прямо под строкой набора DataSource не сработало. Я также выполнил такие проверки, как если (ddlMarketerContract != null) и если (ddlMarketerContract.DataSource != null), и обе они вернули true, поэтому элемент управления и источник данных присутствуют. Я не уверен, что он говорит, что нет никаких возражений.

toadfromgrove 28.05.2019 17:34

Можете ли вы опубликовать весь метод жизненного цикла, который вы используете?

mclark1129 28.05.2019 17:37

После того, как я уберу настройку и привязку других раскрывающихся списков, выше действительно все, что касается элемента управления. В событии Page_Load я объявляю Using, чтобы открыть контекст, затем устанавливаю источник данных с помощью LINQ, закрываю Using, затем связываю данные

toadfromgrove 28.05.2019 17:43

Трудно сказать, в чем проблема, но, возможно, попробуйте выполнить привязку к некоторым фиктивным данным с помощью базового List<string>, чтобы посмотреть, сможете ли вы определить, связана ли проблема с привязкой данных или с EF.

mclark1129 28.05.2019 17:54

Я думаю, что это как-то связано с набором данных. Когда я устанавливаю набор данных для всей таблицы и устанавливаю DataTextField/DataValueField для имени столбца, он работал. Это просто не имеет смысла, когда на другой странице я не устанавливаю DataTextField/DataValueField и устанавливаю источник данных на отдельные значения из столбца, чтобы вернуть список строк, и это работает.

toadfromgrove 28.05.2019 17:54

Хорошо, похоже, это оператор LINQ. Мне удалось привязать элемент управления к новому List<string> {[values]}. Единственная нечетная часть заключается в том, что оператор LINQ является копией/вставкой оператора LINQ на других страницах, который отлично работает.

toadfromgrove 28.05.2019 18:06
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
8
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема была с оператором LINQ. После создания общего списка строковых значений я смог просто связать элемент управления. Изменит запрос LINQ, чтобы решить проблему.

Другие вопросы по теме