Ich will des Öffteren eine Collection Klasse an ein DataGrid binden. Das geht soweit problemlos,
wenn die Collection das Interface IList implementiert.
Ich habe z.B. eine Klasse "Adresse" und eine Collection "Adressen". "Adressen" implementiert das
Interface IList.
Klasse Adresse:
[Serializable]
publicclass Adressen
{
public Adressen()
{
}
privatestring m_strName =string.Empty;
publicstring Name
{
get
{
return m_strName;
}
set
{
m_strName = value;
}
}
}
Klasse
Adressen (gekürzte Version, erstellt mit
CodeSmith 2.6 CSVector.cst Forlage):
[Serializable]
publicclass Adressen : ICollection, IList, IEnumerable, ICloneable
{}
Diese Klasse nimmt Objekte vom Typ "Adresse" auf.
Jetzt kann ich die Klasse "Adressen" ohne weiteres an das DataGrid binden.
this.Adressen ist eine Eigenschaft, die mir eine Instanz von Adressen mitführt.
CurrencyManager cm = (CurrencyManager)this.DataGrid1.BindingContext[this.Adressen, ""];
cm.Refresh();
DataGrid1.DataSource =this.Adressen;
Der CurrencyManager ist dafür da, dass das Grid änderungen mitbekommt.
Was auch ganz schön ist, wenn ich im Grid im Feld "Name" was ändere, ist das in der Instanz Adressen auch gleich gemacht.
Ohne das ich irgend welchen Code schreiben muss, kann ich jezt einfach die Instanz Adressen serialisieren.
Die Instanz Adressen ist also immer aktuell mit dem Grid.