Hallo wollte eine Collection erstellen, welche ich direkt einem GridView als DataSource zuweisen kann. Das ganze funktioniert auch sehr gut und wird
momentan ungefähr so gemacht:
public partial class UserCollection : System.Collections.CollectionBase, ITypedList
{
#region ITypedList Members
PropertyDescriptorCollection propertyDescriptorCollection = new PropertyDescriptorCollection(null);
public PropertyDescriptorCollection PropertyDescriptorCollection
{ get { return propertyDescriptorCollection; } }
public PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors)
{ return this.propertyDescriptorCollection; }
public string GetListName(PropertyDescriptor[] listAccessors)
{ return "UserCollection"; }
#endregion
... und noch andere Dinge
}
Der Eigenschaft PropertyDescriptorCollection kann ich auch sehr gut spezialisierte PropertyDescriptoren zuweisen, welche alle von der
Klasse AbstractPropertyDescriptor abgeleitet sind. Wenn die Daten nun
in meiner Collection drin sind, kann ich über :
userCollection.PropertyDescriptorCollection.Add(ne w PhoneProperty());
userCollection.PropertyDescriptorCollection.Add(ne w EmailProperty());
userCollection.PropertyDescriptorCollection.Add(ne w NameProperty());
und so weiter die einzelnen Spalten bestimmen, welche ich in dem Grid
sehen will. Nun weise ich einfach über "gridView.DataSource = userCollection"
die Daten dem Grid zu und ich sehe auch die drei Spalten wie angegeben.
Nun will ich aber die gleichen Daten einem zweiten GridView zuweisen. Hier
möchte ich aber andere Spalten sehen. Ich möchte also eine andere Sicht
auf die Daten.
Wie bekommt man es hin, das die "Erste Sicht" unabhängig von der "Zweiten Sicht" ist, die Daten aber nur einmal vorhanden sind? Gibt es dafür ein Vorgehen?
Diese Trennung Bekomme ich auf diesen Weg hin.
userCollection.PropertyDescriptorCollection.Clear( );
userCollection.PropertyDescriptorCollection.Add(ne w MaleProperty());
userCollection.PropertyDescriptorCollection.Add(ne w StreetlProperty());
userCollection.PropertyDescriptorCollection.Add(ne w PhoneProperty());
BindingSource bindingSource = new BindingSource();
bindingSource.ResetBindings(true);
bindingSource.DataSource = dmsMailbox.Collection;
gridView.DataSource = bindingSource;
Hat das schon einmal jemand ähnlich gemacht oder ist dieses
vorgehen ein absolutes "NoGo"?
Danke, Dieter
momentan ungefähr so gemacht:
public partial class UserCollection : System.Collections.CollectionBase, ITypedList
{
#region ITypedList Members
PropertyDescriptorCollection propertyDescriptorCollection = new PropertyDescriptorCollection(null);
public PropertyDescriptorCollection PropertyDescriptorCollection
{ get { return propertyDescriptorCollection; } }
public PropertyDescriptorCollection GetItemProperties(PropertyDescriptor[] listAccessors)
{ return this.propertyDescriptorCollection; }
public string GetListName(PropertyDescriptor[] listAccessors)
{ return "UserCollection"; }
#endregion
... und noch andere Dinge
}
Der Eigenschaft PropertyDescriptorCollection kann ich auch sehr gut spezialisierte PropertyDescriptoren zuweisen, welche alle von der
Klasse AbstractPropertyDescriptor abgeleitet sind. Wenn die Daten nun
in meiner Collection drin sind, kann ich über :
userCollection.PropertyDescriptorCollection.Add(ne w PhoneProperty());
userCollection.PropertyDescriptorCollection.Add(ne w EmailProperty());
userCollection.PropertyDescriptorCollection.Add(ne w NameProperty());
und so weiter die einzelnen Spalten bestimmen, welche ich in dem Grid
sehen will. Nun weise ich einfach über "gridView.DataSource = userCollection"
die Daten dem Grid zu und ich sehe auch die drei Spalten wie angegeben.
Nun will ich aber die gleichen Daten einem zweiten GridView zuweisen. Hier
möchte ich aber andere Spalten sehen. Ich möchte also eine andere Sicht
auf die Daten.
Wie bekommt man es hin, das die "Erste Sicht" unabhängig von der "Zweiten Sicht" ist, die Daten aber nur einmal vorhanden sind? Gibt es dafür ein Vorgehen?
Diese Trennung Bekomme ich auf diesen Weg hin.
userCollection.PropertyDescriptorCollection.Clear( );
userCollection.PropertyDescriptorCollection.Add(ne w MaleProperty());
userCollection.PropertyDescriptorCollection.Add(ne w StreetlProperty());
userCollection.PropertyDescriptorCollection.Add(ne w PhoneProperty());
BindingSource bindingSource = new BindingSource();
bindingSource.ResetBindings(true);
bindingSource.DataSource = dmsMailbox.Collection;
gridView.DataSource = bindingSource;
Hat das schon einmal jemand ähnlich gemacht oder ist dieses
vorgehen ein absolutes "NoGo"?
Danke, Dieter
Comment