tôi đang thiết lập một DataGridViewComboBoxColumn
như thế này:Làm cách nào để tôi thiết lập DataGridView ComboBoxColumn bằng một DataSource khác trong mỗi ô?
var newColumn = new DataGridViewComboBoxColumn() {
Name = "abc"
};
newColumn.DataSource = new string[] { "a", "b", "c" };
dgv.Columns.Add(newColumn);
này hoạt động: mỗi hàng có một hộp thả xuống trong cột đó, dân cư với a, b, c.
Tuy nhiên, bây giờ tôi muốn cắt danh sách cho các hàng nhất định. Tôi đang cố gắng đặt danh sách cho mỗi hàng như sau:
foreach (DataGridViewRow row in dgv.Rows) {
var cell = (DataGridViewComboBoxCell)(row.Cells["abc"]);
cell.DataSource = new string[] { "a", "c" };
}
Tuy nhiên, mã này không có hiệu lực - mọi hàng vẫn hiển thị "a", "b", "c".
Tôi đã thử thay thế new string[]
bằng new List<string>
và new BindingList<string>
, cả hai không có sẵn.
Tôi cũng đã thử xóa mã đặt newColumn.DataSource
, nhưng sau đó danh sách trống.
Tôi nên làm như thế nào?
Hmm, cũng phù hợp với tôi - trong một dự án thử nghiệm sạch sẽ. Nó phải là một cái gì đó tôi đang làm khác nhau .. – Blorgbeard
Ok, vấn đề là một cái gì đó để làm với thực tế là DataGridView của tôi đã AutoSizeColumnMode thiết lập để AllCells. Tôi nghĩ rằng nó đã được xác nhận giá trị của các tế bào trước khi nguồn dữ liệu của họ được thiết lập (hoặc một cái gì đó). – Blorgbeard
Giúp tôi giải quyết vấn đề! – XXXXX