Вставить элемент в 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>());
Ответы
Ответ 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
. Будут ли объекты такими, как "Выбрать"?.