2 Stimmen

Untergeordnete Eigenschaften an DataGridView binden

Gibt es eine Möglichkeit, die untergeordneten Eigenschaften eines Objekts zu datagridview binden? Hier ist mein Code:

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; }
    }
}

Und ich möchte ID, Name, CityName anzeigen, wenn ein Objekt vom Typ Person an datagridview gebunden ist. Beachten Sie, dass CityName eine Eigenschaft von HomeAddr ist.

0 Stimmen

Möchten Sie Stadtname und Postleitzahl in einer Spalte oder in zwei getrennten Spalten?

0voto

BFree Punkte 100035

Wenn Sie die DataGridView zu AutoGenerateColumns = true haben, gibt es wirklich keine einfache Möglichkeit, dies zu tun. Ihre beste Wette ist, die DataGridView vor der Zeit einrichten, und manuell die DataGridView aufzufüllen.

Alternativ können Sie auch die ITypedList aber das ist ein bisschen mühsam, wenn Sie mich fragen.

0voto

Graviton Punkte 79320

Hm, Ich habe eine Möglichkeit gefunden, dies in FarPoint zu tun .

Aber Sie tun Sie dies in DataGridView, wenn Ihr Objekt keine Eigenschaft vom Typ Liste hat.

0voto

Maciej Punkte 9640

0voto

b0bi Punkte 593

BLToolkit hat BLToolkit.ComponentModel.ObjectBinder

Diese Merkmale sind:

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X