Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   .NET-Sprachen (https://www.delphipraxis.net/82-net-sprachen/)
-   -   Datagridview: dynamisches Databinding (https://www.delphipraxis.net/162506-datagridview-dynamisches-databinding.html)

Iwo Asnet 25. Aug 2011 15:15

Datagridview: dynamisches Databinding
 
Hi Leute,

Hab folgendes Problem.

Ich habe 2 Klassen A und B. Beide Klassen haben einen gemeinsamen Vorfahr 'V'. A hat andere Eigenschaften als B.

Nun habe ich eine Liste, die Objekte vom Typ "V" (oder Kindklassen) aufnehmen kann. In diese Liste will ich nun nur Objekte vom Typ "A" oder nur vom Typ "B" stopfen.

Für die Listen will ich ein (1) DataGridView verwenden und eine BindingDataSource.
Auf Knopfdruck soll das GridView entweder die Liste L[A] mit allen Eigenschaften, oder L[B] mit den Eigenschaften anzeigen.

Lange Rede, kurzer Sinn: Ich kriegs nicht hin.
Code:
 private List<Basis> lst = new List<Basis>();
     
 private void button1_Click(object sender, EventArgs e)
 {
   lst.Clear();
   lst.Add(new C2("A", "C"));
   bindingSource1.DataSource = lst;
 }

private void button2_Click(object sender, EventArgs e)
 {
   lst.Clear();
   lst.Add(new C1("A", "B"));
   bindingSource1.DataSource = lst;
}

    public class Basis
    {
        public Basis()
        {
        }
        public Basis(string s)
        {
            A = s;
        }
        public string A {get;set;}
    }

    public class C1 : Basis
    {
        public C1(string a, string b)
        {
            A = a;
            B = b;
        }
        public string B { get; set; }
    }
    public class C2 : Basis
    {
        public C2(string a, string c)
        {
            A = a;
            C = c;
        }
        public string C { get; set; }
    }
Mir ist schon klar, das die Bindingsource den Datentyp der Liste nimmt und anhand des dort definierten Typs die Spalten erzeugt und das Databinding vornimmt.

Aber selbst wenn ich die Spalten per Hand erzeuge ("DataPropertyName" auf "A", "B" bzw. "C") setze, bekomme ich es so nicht hin.

Gibt es nicht ne Möglichkeit, das hinzubiegen?

FredlFesl 25. Aug 2011 18:04

AW: Datagridview: dynamisches Databinding
 
Versuchs mal mit 'ArrayList' statt der typisierten 'List<T>'.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz