2015-05-07 2 views
1

У меня есть combobox, который привязан к списку. Я пытался выяснить, как получить первый элемент в поле со списком, когда он загружается «--Please Select--», прежде чем загрузятся данные из списка.Как показать первый элемент в combobox в C# Winform

Я попытался это,

 cbUpdate.DataSource = _names; 
     cbUpdate.Items.Insert(0, "-Select-"); 
     cbUpdate.SelectedIndex = 0; 
     cbUpdate.DisplayMember = "Name"; 

Но это дает errro,

коллекция предметов не может быть изменен, когда свойство DataSource является множество.

Я понимаю ошибку, но я не уверен, как ее решить. Я пытаюсь установить текст комбобокса на «Пожалуйста, выберите», но это не сработает.

var names = new BindingList<Names>(); 
+0

Если данные для этого комбинированного блока получены через инструкцию Salad, добавьте «--- Please Select ---» также в качестве значения. Или удалите свойство DataSource и после того, как вы вернете все данные. Прокрутите элементы и добавьте значения один за другим, включая параметр по умолчанию –

ответ

0

Вы должны решить, используйте либо свойство Items, и заполните все ваши варианты. Или используйте DataSource со всеми опциями.

В любом случае, для записи «--Please Select--» вы должны либо иметь ее как одну из опций внутри Items, либо DataSource. Или вы можете просто установить свойство SelectedText.

0

Попробуйте вставить в список имен текст «--Select--», прежде чем устанавливать его в источник данных.

Пример:

List<Person> list = new List<Person>() { 
              new Person("Jon"), 
              new Person("Ram"), 
              new Person("Rin")          
             }; 

      list.Insert(0, new Person("--Select")); 

      comboBox1.DataSource = list; 
      comboBox1.DisplayMember = "Name"; 
      comboBox1.Items.Clear(); 
-1

Есть и другие способы для достижения этой цели. Это зависит от того, как вы извлекаете значения из своей базы данных.

Если вы используете оператор выбора, вы можете сделать союз как

// Oracle 
SELECT 0, "---- Please Select ----" from dual 
UNION 
SELECT [value], [name] from [table] 

результат которого можно назначить в качестве источника данных.

Другим вариантом, чтобы удалить свойство DataSource и как только у вас есть данные в руках, перебирать набор записей и добавлять элементы по одному, с 0 и "---- Please Select ----" как ValueMember и DisplayMember для первого элемента.

0

Вы устанавливаете источник данных и добавляете элемент, после которого в итоге выдается ошибка. Лучшим подходом было бы добавить элемент «-Выбрать-» сначала в combobox, а затем попытаться добавить следующие элементы в списке, используя оператор foreach, вместо того, чтобы связывать этот список со списком.

cbUpdate.Items.Clear(); 
cbUpdate.Items.Add("-Select-"); 

foreach (string item in thelsit) 
{ 
    cbUpdate.Items.Add(item.ToString()); 
} 

cbUpdate.SelectedIndex = 0;