2009-10-14 23 views
12

Tôi đã DataGridView ràng buộc với List<myClass>DataSource. Nhưng khi tôi đặt thuộc tính "AllowUserToAddRows" thành "True" thì sẽ không có gì xuất hiện.Không thể cho phép người dùng thêm hàng vào DataGridView với Danh sách <> Mã nguồn số

Tôi đã cố gắng thay đổi DataSource thành BindingList<myClass> và hoạt động tốt.

Tôi tự hỏi nếu tôi nên thay thế List<> của mình bằng BindingList<> hoặc có giải pháp tốt hơn.

Trả lời

21

myClass có một hàm tạo tham số công khai không? Nếu không, bạn có thể lấy được từ BindingList<T> và ghi đè AddNewCore để gọi hàm tạo tùy chỉnh của bạn.

(chỉnh sửa) Ngoài ra - chỉ cần quấn danh sách của bạn trong một BindingSource và nó có thể làm việc:

using System; 
using System.Windows.Forms; 
using System.Collections.Generic; 
public class Person { 
    public string Name { get; set; } 

    [STAThread] 
    static void Main() { 
     var people = new List<Person> { new Person { Name = "Fred" } }; 
     BindingSource bs = new BindingSource(); 
     bs.DataSource = people; 

     Application.Run(new Form { Controls = { new DataGridView { 
      Dock = DockStyle.Fill, DataSource = bs } } }); 
    } 
} 
+0

Đó làm việc :) Cảm ơn u rất nhiều. –

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