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

В 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 — переменная, содержащая имя поля базы данных.


person John M    schedule 11.06.2010    source источник


Ответы (2)


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

var list = table.AsEnumerable().Select(row => row.Field<string>("fieldA")).ToList();
list.Insert(0, "*");
this.cboList.DataSource = list;
person Anthony Pegram    schedule 11.06.2010
comment
Я получаю InvalidCastException -› где я могу преобразовать/преобразовать System.Double в System.String в коде, который вы показываете? - person John M; 11.06.2010
comment
@John - Если ваш столбец двойной, вы должны изменить его следующим образом: .Select(row => row.Field<double>("fieldA").ToString("0.00")).ToList();, где 0,00 — это формат ваших чисел (формат можно опустить или изменить). - person Anthony Pegram; 11.06.2010

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

person dretzlaff17    schedule 11.06.2010