2013-09-27 52 views
6

ive được strugling với vấn đề này quá lâu, ive thấy tất cả các câu trả lời về chủ đề và mặc dù ive tìm thấy một số không ai trong số họ dường như làm việc cho tôi. Vì vậy, cơ sở của vấn đề của tôi là như sau: Tôi có một DataGridView sẽ thêm một hàng cho chính nó khi một ô khác DataGridView được nhấp đúp. Khi DataGridView này được thêm hàng, nó thêm 2 loại cột vào chính nó là ComboBox, được cho là có một colection đã được đặt trong nó (chỉ cần đi đến các tùy chọn ComboBox bên trong datagrid và điền vào bộ sưu tập của nó) và một hộp kiểm tra cột, bây giờ cả hai người trong số họ không làm gì một khi tôi nhấp vào chúng, doble clic, nhiều nhấp chuột như nhiều bức ảnh như bạn muốn nhưng không có gì xảy ra. Tôi thậm chí đã thử các mã sau đây.Thả xuống Combobox bên trong datagridview

public static void combolist(DataGridView combogrid)    
{ 

    var column = new DataGridViewComboBoxColumn(); 

    DataTable data = new DataTable(); 

    data.Columns.Add(new DataColumn("Value", typeof(string))); 
    data.Columns.Add(new DataColumn("Description", typeof(string))); 

    data.Rows.Add("item1"); 
    data.Rows.Add("item2"); 
    data.Rows.Add("item3"); 

    column.DataSource = data; 
    column.ValueMember = "Value"; 
    column.DisplayMember = "Description"; 

    combogrid.Columns.Add(column); 
} 

và mặc dù tôi có thể thêm một cột mới của các loại ComboBox để tôi DataGridView nó vẫn còn trống (hoặc apears là kể từ khi tôi cant clic để xem một danh sách thả xuống). dữ liệu của tôi DataGridView thuộc tính GridView được đặt thành:

editMode: editOnEnter, readOnly: false.

Có điều gì đó thiếu ở đây không? tại sao tôi không thể cư trú hoặc hiển thị này ComboBox ?, plz vấn đề này là lái xe cho tôi điên, và tôi tin rằng đây là trang web tốt nhất để tìm câu trả lời. Tôi sẽ nói nhiều về nó ... rất nhiều.

Ok vì vậy tôi chắc chắn cần phải xem vấn đề từ góc độ khác, ive thậm chí tryed ràng buộc ComboBox đến một nguồn dữ liệu và vẫn doesnt hiển thị bất cứ điều gì !, mặc dù nguồn dữ liệu cùng binded đến một bình thường ComboBox được kết quả mong muốn

DataGridViewComboBoxCell ComboColumn = (DataGridViewComboBoxCell)(combogrid.Rows[0].Cells[2]); 

ComboColumn.DataSource = class.details.GetData(); 
ComboColumn.DisplayMember = "name"; 

có thiếu một số bước cơ bản khi làm việc với ComboBox bên trong DataGridView?

+0

Tôi không thấy lỗi trong thông tin đã cho và tôi không biết điều gì đặc biệt mà bạn nên xem xét vì 'DataGridViewComboBoxCell' gần giống với' ComboBox' thông thường. Có lẽ bạn có thể đăng toàn bộ mã để thêm hàng/cột và các thứ khác của 'DataGridView' có liên quan đến hoạt động này? – Onsokumaru

+0

thx bệnh cố gắng và làm điều đó – user2793090

Trả lời

3

Vài suy nghĩ:

  1. Tôi đã kiểm tra mã của bạn như được đăng với visual studio 2012 và thực hiện mã bằng cách nhấp chuột vào một Button có một sản phẩm nào DataGridView. Nó làm việc cho tôi, bởi vì tôi có một DataGridComboBoxColumn có một ComboBox với ba mục trống. Tôi đã mở rộng mã như sau và có ba mục có tên:

    data.Columns.Add(new DataColumn("Value", typeof(string))); 
        data.Columns.Add(new DataColumn("Description", typeof(string))); 
    
        data.Rows.Add("item1"); 
        data.Rows[data.Rows.Count - 1].SetField("Value", "value1"); 
        data.Rows[data.Rows.Count - 1].SetField("Description", "description1"); 
        data.Rows.Add("item2"); 
        data.Rows[data.Rows.Count - 1].SetField("Value", "value2"); 
        data.Rows[data.Rows.Count - 1].SetField("Description", "description2"); 
        data.Rows.Add("item3"); 
        data.Rows[data.Rows.Count - 1].SetField("Value", "value3"); 
        data.Rows[data.Rows.Count - 1].SetField("Description", "description3"); 
    
        column.DataSource = data; 
    

    Có vẻ như mã của bạn chỉ thêm hàng đầu tiên ("Giá trị" không phải là giá trị hiển thị của bạn) được lấp đầy với giá trị đã cho cho dữ liệu có giá trị không thể hiển thị. Cuối cùng tôi không thể tái tạo vấn đề của bạn không thể mở danh sách thả xuống (lưu ý rằng tôi đã sử dụng một số trống DataGridView vì tôi không biết bạn có gì khác trong số DataGridView) của mình.

  2. Tôi không biết liệu mã đã đăng có chính xác là mã mà bạn gặp sự cố không.Nhưng bạn viết rằng bạn thêm một hàng vào DataGridView khi một ô được nhấp và khi điều này xảy ra, bạn thêm hai cột. Bạn có nghĩa là bạn thêm cho mỗi hàng thêm hai cột vào lưới hoặc bạn chỉ có nghĩa là hàng bao gồm hai cột này?
    Nếu người cuối cùng là đúng, có vẻ như tôi là một vấn đề tương tự như với mã được đăng. Bạn có cân nhắc tạo hàng theo cách thủ công bằng cách thêm DataGridViewComboBoxCellDataGridViewCheckboxCell không? Chúng tôi có một phức tạp yên tĩnh DataGridViewUserControl nơi chúng tôi tự động thêm các kiểu ô khác nhau và không có vấn đề gì với việc hiển thị chúng một cách chính xác. Nhưng chúng tôi tạo tất cả các hàng theo cách thủ công, điền các loại ô mong muốn bằng tay vào các hàng và không chỉ định loại cho cột.

+0

Im xin lỗi ive dường như nhầm lẫn u với sự giải thích của tôi. Đây là điều, datagrid2 là một DataGrid rỗng có một hàng được thêm vào nó với 2 cột một khi sự kiện cellclick trên datagrid1 được kích hoạt, các hàng với các kiểu cột sẽ được thêm vào một cách thích hợp nhưng không tìm thấy colections trong cột hộp tổ hợp (cột 1) và cũng không có gì xảy ra khi nhấp vào nút hộp kiểm cột2. Tôi đoán cách tốt nhất sẽ được thêm tất cả các cột programaticaly nhưng im không khá chắc chắn tại sao im có vấn đề này, thx cho bạn trả lời ur buddy – user2793090

1

Đó là vì DataTable của bạn có 2 columns. Nhưng bạn chỉ thêm giá trị cho các ô ở cột 1, các ô ở cột 2 (sẽ được sử dụng là DisplayMember trong số comboBox) của bạn có giá trị trống. Hãy thử điều này thay vì:

//..... 
data.Rows.Add("item1","This is Item1"); 
data.Rows.Add("item2","This is Item2"); 
data.Rows.Add("item3","This is Item3"); 
//..... 
+0

tôi apreciate ur câu trả lời nhưng thậm chí thay đổi này không có diference, tôi nghĩ rằng vấn đề recides trong thực tế combo dường như không được đáp ứng với bất kỳ sự kiện clic tôi thực hiện hoặc bất cứ điều gì althoug tôi không hiểu tại sao điều này sẽ xảy ra – user2793090

+0

@ user2793090 xin lỗi, ** Tôi đã thử nghiệm nó ** –

+0

phải có điều gì đó thiết lập sai trong datagrid của tôi sau đó, một số tài sản, bởi vì tôi đã thực hiện những thay đổi u sugest và tôi vẫn nhận được kết quả tương tự ... bất kỳ suy nghĩ? – user2793090

2

Bạn đang thêm 2 cột vào cột dữ liệu và chỉ điền vào thành viên giá trị. Hãy thử điều này

 var column = new DataGridViewComboBoxColumn(); 

     DataTable data = new DataTable(); 

     data.Columns.Add(new DataColumn("Value", typeof(string))); 
     data.Columns.Add(new DataColumn("Description", typeof(string))); 

     data.Rows.Add("item1","123"); 
     data.Rows.Add("item2","234"); 
     data.Rows.Add("item3","245"); 

     column.DataSource = data; 
     column.ValueMember = "Value"; 
     column.DisplayMember = "Description"; 

     dataGridView1.Columns.Add(column); 
+0

thx cho câu trả lời ur, nhưng tôi vẫn nhận được kết quả tương tự ngay cả với sửa đổi này – user2793090

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