Подтвердить что ты не робот

Вставить элемент в combobox после привязки его к набору данных в С#

Мне нужно вставить "Выбрать" сверху после того, как combobox привязан к dataset.i, попробовал этот, но он не работает. Ошибка в передаче данных "dataset does not есть какое-то определение для броска". Я думаю, что не использую его правильно. Комментируемый код - это часть, которую я пытался, но не работаю.

cmbCategory.DataSource = dsCat.Tables[0];
cmbCategory.DisplayMember = "CategoryName";
cmbCategory.ValueMember = "ID";
// cmbCategory.Items.Add("Select");
// cmbCategory.SelectedText = "Select";
// cmbCategory.DataSource =(new object[] { "Select" }).Concat(this.liveReportingDalc.GetCategoriesByType(CategoryType.RegistrationType).Cast<object>()); 
4b9b3361

Ответ 1

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

Вы можете использовать это:

DataTable dt = new DataTable();

dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("CategoryName");

DataRow dr = dt.NewRow();
dr["CategoryName"] = "Select";
dr["ID"] = 0;

dt.Rows.InsertAt(dr, 0);

cmbCategory.DisplayMember = "CategoryName";
cmbCategory.ValueMember = "ID";
cmbCategory.DataSource = dt;
cmbCategory.SelectedIndex = 0;

Это очень прямой пример.

Ответ 2

Вы не можете добавлять элементы в ComboBox после привязки к источнику данных. Чтобы добавить или удалить элементы из ComboBox с привязанным источником данных, вам нужно сделать это через источник данных.

Вы можете вставить DataRow в свою таблицу, и он будет автоматически добавлен в ваш ComboBox. Попробуйте следующее:

 DataRow dr = dsCat.Tables[0].NewRow();
 dr["CategoryName"] = "Select";
 dr["ID"] = 123;// Some ID
 dsCat.Tables[0].Rows.Add(dr);

Ответ 3

// cmbCategory.DataSource =(new object[] { "Select" }).Concat(this.liveReportingDalc.GetCategoriesByType(CategoryType.RegistrationType).Cast<object>()); 

Возможно, вы сможете это сделать, но ваш синтаксис как-то не прав.

Возможно, вы можете разделить его, пока не разобрались, а затем скомпилируете его в встроенные функции.

List <object> catData = new List <object> { "Select" };

DataSet catByType = this.liveReportingDalc.GetCategoriesByType(CategoryType.RegistrationType);

foreach(DataRow oRow in catByType.Tables[0].Rows)
{ catData.Add(oRow.ItemArray[0]); }

Но для этого вам нужно консолидировать свое понимание данных, возвращающихся из функции GetCategoriesByType. Будут ли объекты такими, как "Выбрать"?.