DataSource, содержащий нулевое значение, приводит к сбою ComboBox

Я с головой окунулся в C# и .Net 2.0 с помощью Linq, и у меня возникли некоторые проблемы с отладкой некоторых проблем, а именно:

У меня есть элемент управления ComboBox (cmbObjects), который я хочу заполнить набором объектов, полученных с помощью Linq. Я написал вспомогательный метод для заполнения универсального List<T>:

class ObjectProvider
{

    public static List<T> Get<T>(bool includeNull) where T : class, new()
    {
        List<T> list = new List<T>();
        LutkeDataClassesDataContext db = ConnectionManager.GetConnection();
        IQueryable<T> objects = db.GetTable<T>().AsQueryable();

        if (includeNull) list.Add(null);

        foreach (T o in objects) list.Add(o);

        return list;
    }

    public static List<T> Get<T>() where T : class, new()
    {
        return Get<T>(false);
    }
}

Я проверил результаты при вызове функции с истиной или ложью - List действительно содержит правильные значения, при передаче true он содержит null в качестве первого значения, за которым следуют другие объекты.

Однако, когда я назначаю DataSourceComboBox, элемент управления просто отказывается отображать какие-либо элементы, включая значение null (не выбирается):

cmbObjects.DataSource = ObjectProvider.Get<Car>(true);

Передача false (или отсутствие параметра) действительно работает - отображаются все объекты.

Есть ли способ указать "нулевое" значение для первого объекта, не прибегая к объектам с магическим числом (например, наличие фиктивной записи в базе данных только для обозначения значения N / A)? Что-то вроде обнуляемого было бы идеально, но я заблудился.

Кроме того, я попытался добавить в список new T() вместо null, но это привело только к OutOfMemoryException.

Кроме того, я пытался объявить List как List<Nullable<T>>, но компилятор не позволяет мне этого сделать.

Klemen Slavič 16.12.2008 12:49

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

Gishu 16.12.2008 12:56

Я имел в виду использовать этот элемент управления для отображения слабой связи. В базе данных отношение определяется как int, допускающий значение NULL, который я хотел бы представить как выбор, который пользователь может сделать, выбрав пустое значение в ComboBox.

Klemen Slavič 16.12.2008 12:59

Хотел бы увидеть лучший ответ на этот вопрос. у меня та же проблема

TheSoftwareJedi 27.05.2009 20:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
2 749
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Хорошо, похоже, что DataSource становится недействительным, если вы пытаетесь добавить значение null. Решением было просто добавить элементы через простой цикл foreach с пустой строкой в ​​начале вместо назначения List<>.

В поле со списком есть возможность добавлять элементы с привязкой к данным к жестко запрограммированным элементам в списке. Таким образом, вы жестко запрограммируете свое непринятое значение, а данные связывают реальные значения.

Совершенно уверен, что если вы добавите DataBind в коллекцию, вы также не сможете вручную добавлять элементы - это операция либо или ...

Matt 25.02.2010 12:45

Не правда. В файле aspx вы можете указать элементы списка с жестким кодом и установить для атрибута AppendDataBoundItems значение true. Затем, когда вы выполняете DataBind (), он добавляет строки данных к жестко запрограммированным элементам.

GeekyMonkey 25.02.2010 23:24

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