C# 将子属性绑定到DataGridView

C# 将子属性绑定到DataGridView,c#,data-binding,datagridview,C#,Data Binding,Datagridview,有没有办法将对象的子属性绑定到datagridview?这是我的密码: public class Person { private string id; private string name; private Address homeAddr; public string ID { get { return id; } set { id = value; } } public string Name

有没有办法将对象的子属性绑定到datagridview?这是我的密码:

public class Person
{
    private string id;
    private string name;
    private Address homeAddr;
    public string ID
    {
        get { return id; }
        set { id = value; }
    }
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    public Address HomeAddr
    {
        get { return homeAddr; }
        set { homeAddr = value; }
    }
}

public class Address
{
    private string cityname;
    private string postcode;
    public string CityName
    {
        get { return cityname; }
        set { cityname = value; }
    }
    public string PostCode
    {
        get { return postcode; }
        set { postcode = value; }
    }
}

我想在Person类型的对象绑定到datagridview时显示ID、Name和CityName。请注意,CityName是HomeAddr的一个属性

如果您将DataGridView设置为AutoGenerateColumns=true,那么确实没有简单的方法可以做到这一点。最好提前设置DataGridView,并手动填充DataGridView


或者,您可以实现,但如果您问我,这有点麻烦。

如果您使用DataGridView来AutoGenerateColumns=true,那么确实没有简单的方法来实现。最好提前设置DataGridView,并手动填充DataGridView

或者,您可以实现,但如果您问我的话,这有点麻烦。

但如果对象没有列表类型属性,则可以在DataGridView中执行此操作

但如果对象没有列表类型属性,则可以在DataGridView中执行此操作

你也可以看看这里

你也可以看看这里


BLToolkit具有BLToolkit.ComponentModel.ObjectBinder

这些特点是:

Support for field binding along with property binding.

Support for inner class field and property binding such as Order.Address.Line1.

Support for the ObjectView feature which is available by assigning an object view type to the ObjectBinder.ObjectViewType property. An object view is an object that implements the IObjectView interface. This interface includes only one property - object Object { get; set; }. An object view can implement additional properties based on the assosiated object. The ObjectBinder will combine all of these properties with main object properties and create a single PropertyDescriptor collection. This feature can be used to separate UI presentation logic from business model objects and to keep them clean. ObjectView should be a stateless, lightweight object as its single instance can be assigned to many assosiated objects.

The ObjectBinder is optimized for high performance applications such real-time multithreaded message processing and distribution banking systems. So it does not use reflection to access objects. The standard way (which is used by the BindingSource) is to call the TypeDescriptor.GetProperties method to get a PropertyDescriptor collection. This method creates property descriptors that access object properties by reflection. The ObjectBinder has its own mechanism to avoid unnessasy reflection and boxing/unboxing operations.

BLToolkit具有BLToolkit.ComponentModel.ObjectBinder

这些特点是:

Support for field binding along with property binding.

Support for inner class field and property binding such as Order.Address.Line1.

Support for the ObjectView feature which is available by assigning an object view type to the ObjectBinder.ObjectViewType property. An object view is an object that implements the IObjectView interface. This interface includes only one property - object Object { get; set; }. An object view can implement additional properties based on the assosiated object. The ObjectBinder will combine all of these properties with main object properties and create a single PropertyDescriptor collection. This feature can be used to separate UI presentation logic from business model objects and to keep them clean. ObjectView should be a stateless, lightweight object as its single instance can be assigned to many assosiated objects.

The ObjectBinder is optimized for high performance applications such real-time multithreaded message processing and distribution banking systems. So it does not use reflection to access objects. The standard way (which is used by the BindingSource) is to call the TypeDescriptor.GetProperties method to get a PropertyDescriptor collection. This method creates property descriptors that access object properties by reflection. The ObjectBinder has its own mechanism to avoid unnessasy reflection and boxing/unboxing operations.

您希望城市名称和邮政编码在一列中还是在两个单独的列中?您希望城市名称和邮政编码在一列中还是在两个单独的列中?