Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Вставить строку по умолчанию в поле со списком, привязанное к таблице данных?

Автор вопроса: John MОтветов: 2

В winform есть поле со списком, которое получает информацию из таблицы данных. Datatable рисует из списка базы данных.

this.cboList.DataSource = pullData();
this.cboList.DisplayMember = "fieldA";

Как только источник данных установлен, я не могу вставить строку по умолчанию (т.е. *) в качестве первого элемента в поле со списком.

Я пробовал это:

this.cboList.Items.Insert(0,"*");

Есть ли способ вставить в поле со списком после установки источника данных или это нужно сделать в таблице данных?

ОБНОВЛЕНИЕ 1:

Решение выглядит примерно так:

 var list = mydt.AsEnumerable().Select(row => row.Field<string>(fieldName)).ToList();
 list.Insert(0, "*");

Где mydt - заполненная таблица данных, а fieldName - переменная, содержащая имя поля базы данных.

datatablecomboboxwinforms

Ответы

Ответ 1 · рейтинг 2 · Anthony Pegram

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

var list = table.AsEnumerable().Select(row => row.Field<string>("fieldA")).ToList();
list.Insert(0, "*");
this.cboList.DataSource = list;

Ответ 2 · dretzlaff17

Если "Select None" или "*" является допустимым параметром выбора, он должен исходить из исходного объекта привязки. Раньше я делал это, добавляя запись по умолчанию в коллекцию, прежде чем привязывать ее к полю со списком.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы