2010-11-21 28 views
5

Tôi muốn liên kết một cột trong lớp DataGridView của tôi với mục nhập trong đối tượng cấp 2 trong C# bằng .NET 4.0. Ví dụ:Ràng buộc DataGridViewColumn đến đối tượng cấp 2

Tôi có Object A:

public class A 
{ 
    public long id; 
    public B bClass; 
} 

và Object B

public class B 
{ 
    public long id; 
    public string name; 
} 

Có cách nào để khai báo một danh sách các hạng A như các nguồn dữ liệu trên DataGridView, chưa ràng buộc một trong các cột cho thuộc tính name trong lớp B?

Tôi đã chưng cất điều này một chút, nhưng hy vọng điều này không gây nhầm lẫn. Cảm ơn đã giúp đỡ!

Trả lời

0

Có.
Khi bạn ràng buộc, bạn làm như sau:

grid.DataSource = MyAList; 
grid.DataMember = "bClass"; 
grid.DataBind(); 

Bây giờ khi bạn đang ràng buộc, bạn đang đánh giá cho các thành viên của lớp B.

+0

Nhưng điều đó sẽ không ràng buộc sai? Sự hiểu biết của tôi là lưới dữ liệu chỉ có thể liên kết với các giao diện nguyên thủy, bộ sưu tập/số đếm hoặc giao diện INotifyPropertyChanged. –

+0

@AK; bạn luôn có thể xử lý ràng buộc cụ thể trong sự kiện 'ItemDataBound'. – BeemerGuy

1

Các giải pháp trên không làm việc cho tôi. Tôi hiểu câu hỏi giống như trong chủ đề này: Is it possible to bind complex type properties to a datagrid?

Điều tôi đã làm là triển khai lớp C trong lớp gui có tất cả các thuộc tính mong muốn ở cấp độ đầu tiên. Bạn cũng có thể viết một hàm khởi tạo lớp mới từ lớp A:

public class C 
{ 
    public C(A a) 
    { 
     Id = a.Id; 
     Bid = a.bClass.Id; 
     Bname = a.bClass.Name; 
    } 

    public long Id; 
    public long Bid; 
    public string Bname; 
} 
Các vấn đề liên quan