2012-07-07 33 views
13

Tôi phải chèn "Chọn" ở trên cùng sau khi combobox bị ràng buộc từ dataset.i đã thử this nhưng nó không hoạt động. Số liệu lỗi "không có bất kỳ định nghĩa cho diễn viên "Tôi nghĩ rằng tôi không sử dụng nó đúng cách. Mã số là phần tôi đã cố gắng nhưng không làm việc.chèn mục trong combobox sau khi liên kết nó từ một Tập dữ liệu trong 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>()); 

Trả lời

20

Bạn phải chèn vào đối tượng bạn đang gắn thẻ chứ không phải với combobox. Bạn không thể chèn trực tiếp vào hộp tổ hợp.

Bạn có thể sử dụng này:

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; 

này rất thẳng ví dụ về phía trước.

+0

Tôi đã thử cách được đề xuất của bạn nhưng tôi nhận được lỗi có nội dung 'Cột có tên 'CODE' đã thuộc về DataTable này.' – sam

6

Bạn không thể thêm mục vào ComboBox sau khi liên kết nó với nguồn dữ liệu. Để thêm hoặc xóa các mục từ ComboBox bằng nguồn dữ liệu bị ràng buộc, bạn phải tự làm điều đó thông qua nguồn dữ liệu.

Bạn có thể chèn DataRow vào bảng của mình và nó sẽ tự động được thêm vào ComboBox của bạn. Hãy thử các cách sau:

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

Phương thức Thêm từ dsCat.Tables [0] .Thêm (dr); không hoạt động. – abramlimpin

+0

@abramlimpin Bạn phải gọi Thêm trên thuộc tính Hàng của Bảng. Tôi đã chỉnh sửa mã với bản cập nhật đó – user

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

Bạn có thể làm điều này, nhưng cú pháp của bạn sai cách nào đó.

Có thể bạn có thể chia nhỏ nó cho đến khi bạn tìm ra và sau đó nén lại thành các chức năng nội tuyến.

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

Nhưng để làm việc này, bạn cần phải củng cố sự hiểu biết của mình về dữ liệu quay lại từ hàm GetCategoriesByType. Các đối tượng có văn bản như "Chọn" không ?.

Các vấn đề liên quan