Dataset "global" verfügbar

gravis

Grünschnabel
Hallo

Ich habe ein DataSet in einer Prozedur erstellt und mit Daten gefüllt. Innerhalb dieser Prozedur kann ich problemlos auf die Daten zugreifen. Ich möchte jetzt aber in einer anderen Prozedur ebenfalls auf diese Daten zugreifen können. Leider scheint es aber, dass das DataSet leer ist, obwohl es bereits in der anderen Prozedur gefüllt wurde. Wie kann ich machen, dass dieses DataSet mit den abgefüllten Daten "global" / "public" zu gebrauchen ist?

Vielen Dank für die Hilfe!
 
Hi,

wenn der Webserver zwischen den beiden Prozeduren wieder zum Client "geht" dann werden die Daten deines DataSet auf dem Webserver geloescht und ist somit leer.
Du kannst dies durch das Property "Session" verhindern. Dies ist ein Member der "System.Web.UI.Page"-Klasse und somit auf jeder Seite verfuegbar.
DataSet zu der Session hinzufuegen:
Code:
// ds fuellen;
Session.Add("MeinDataSet", ds);
DataSet in der zweiten Prozedur wieder abrufen:
Code:
DataSet ds = (DataSet)Session["MeinDataSet"];
Das Session Property, mitsamt Inhalt, ist dann auf all deinen .aspx Seiten abrufbar.


Wenn es aber nicht daran liegt, dann versteh ich nicht warum das DataSet public gemacht werden sollte. Schließlich schreibst du ja, dass aus der zweiten Prozedur darauf zugegriffen werden koennte, es aber lediglich leer sei.
 
Hallo,
da Du wie schon erwähnt auf das DataSet zugreifen kannst, gehe ich davon aus,
dass die Funktionen in der gleichen Klasse deklariert sind(deshalb reicht private bei der Sichtbarkeit auf Member). Alle Objekte werden, wie ebenfalls schon erwähnt sofort wieder "zerstört", sobald die Seite abgeschickt wurde.
Die einzige Möglichkeit ist es in einer Session-Variablen abzuspeichern oder bei jedem postback neu zu füllen.
Beide Möglichkeiten sind aber nicht zu empfehlen, da die erste den speicher des Servers zu sehr mit unnützem Ballast zumüllt und die zweite die Datenbank zu sehr belastet und damit an der Performance knabbert.
Vielleicht solltest du Deine Frage etwas konkretisieren, dann könnte man beim eigentlichen Probelm helfen.
Gruß,
Tim
 
Zurück