Einzelnen Beitrag anzeigen

Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#1

Datagridview: dynamisches Databinding

  Alt 25. Aug 2011, 15:15
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?
  Mit Zitat antworten Zitat