Forum: ADO.NET |
Thema:
AW: AW: AW: Ein DataSet in mehreren Fenstern (Forms) verwenden |
Von:
Frank Massel (
22.08.2006 21:39) |
Hallo Horst (und hallo an die anderen anonymen Leser) !
Ich habe eine Lösung gefunden:
Man erstellt ein Komponente, die gleichzeitig noch IListSource implementiert, wobei die üblicherweise erzeugte zweite .cs-Datei der üblicherweise "partial class" gelöscht werden kann/nicht benötigt wird.
public class DataSet_Komponente : Component, IListSource
{
public DataSet_Komponente(IContainer container)
{
container.Add(this);
}
#region IListSource Member
public bool ContainsListCollection { get { return true; } }
public System.Collections.IList GetList()
{
return ((System.ComponentModel.IListSource)
dasDataSet_Stat).GetList();
}
#endregion
private readonly static MeinDataSet dasDataSet_Stat =
new MeinDataSet();
}
Diese Klasse steht in der Entwicklungsumgebung zur Entwicklungszeit in der Toolbox zur Verfügung, kann per "Drag + Drop" auf eine Form gezogen und dort dann als DataSource für Steuerelemente und BindingSource-Objekte verwendet werden und zwar sogar via Eigenschaften-Fenster !
Bei mir funktionierts. Die o.a. Klasse kann man natürlich um (statische) DataSet-"Füll"-Routinen ergänzen. In analoger Weise kann man auch seine BindingSource-Objekte an zentraler Stelle verwalten (mit einem IList [BindingSource]-Attribut). Das ist notwendig, wenn man z.B. im Hauptfenster eine Muttertabelle anzeigt (via entsprechendem BindingSource-Objekt) und dann in einem weiteren Fenster die davon abhängigen Datensätze einer Tochtertabelle anzeigen möchte (und zwar OHNE parametrisiertem Select mit Einschränkung auf die aktuelle Mutter-ID !!! Würde man ja bei Anzeige der Tochtersätze im selben Fenster auch nicht tun...).
Falls jemand weitere Erkenntnisse zum Thema hat, bitte posten. Danke !
Viele Grüße aus Köln !
Frank Massel
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!