2012-07-07 11 views
13

combobox veri kümesinden bağlandıktan sonra üstte "Seç" seçeneğini kullanmam gerekiyor.i this çalıştı ama çalışmıyor. Bu hata "veri kümesinin hiçbiri yok cast "için açıklama .Ben düzgün kullanmıyorum düşünüyorum. Söz konusu kod çalışıyorum ama çalışmıyor parçasıdır.combobox içinde bir Veri Kümesi'nden bağlandıktan sonra öğeyi ekleyiniz C#

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>()); 

cevap

20

Kombobox'a değil, bağlandığınız nesneyi Yerleştirmeniz gerekir. Doğrudan combobox'a ekleyemezsiniz.

Bunu kullanabilirsiniz: Bu çok yalındır örnektir

DataTable dt = new DataTable(); 

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

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

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

dt.Rows.InsertAt(dr, 0); 
cmbCategory.SelectedIndex = 0; 

.

+0

Önerilen yolunu denedim ama "CODE" adlı bir sütun zaten bu DataTable'a ait olan bir hata alıyorum. – sam

6

Bir veri kaynağına bağlandıktan sonra ComboBox öğeler eklemek olamaz. Bir bağlı veri kaynağıyla ComboBox'dan öğe eklemek veya kaldırmak için, bunu veri kaynağının kendisiyle yapmanız gerekir.

Tablonuza bir DataRow ekleyebilirsiniz ve otomatik olarak ComboBox ürününüze eklenecektir. Aşağıdakileri deneyin:

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

dsCat.Tables yöntemini ekle [0] .Ad (dr); çalışmıyor. – abramlimpin

+0

@abramlimpin Tablodaki Satırlar-mülkünde Ekle'yi çağırmalısınız. Bu güncelleştirmeyle kodu düzenledim – user

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

Bunu yapmak mümkün olabilir, ancak sözdiziminiz bir şekilde yanlıştır.

Belki de bunu çözene kadar bölebilirsiniz ve sonra tekrar in-line işlevlerine sıkıştırabilirsiniz.

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]); } 

Ama bunun için

Eğer GetCategoriesByType işlevinden geri gelmesini verilerin anlayışınız pekiştirmek gerekir çalışmak. Nesneler "Seç" gibi bir metin mi olacak?

İlgili konular