Laden...

ASP.NET (1.1) Membervariablen verlieren Werte

Erstellt von modulo vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.374 Views
M
modulo Themenstarter:in
24 Beiträge seit 2004
vor 17 Jahren
ASP.NET (1.1) Membervariablen verlieren Werte

Hallo!

Ich möchte folgendes mit ASP.NET (1.1) realisieren. Zum Testen meiner Anwendung hab ich ein Formular erstellt, das ein DataTable mit zufälligen Werten füllt. Diese DataTable binde ich an ein DataGrid um zu sehen ob die generierten Testdaten ok sind. Ist dies der Fall möchte ich über einen Button die Daten aus dem DataTable in meine Datenbank schreiben.
Die (oder das?) DataTable habe ich als Membervariable deklariert. Leider verliert es aber nach jedem Postback seine Daten.

Meine Frage nun wie gehe ich in diesem Fall am besten vor?

Gruß
Olli

1.130 Beiträge seit 2005
vor 17 Jahren

Die Instanz einer aspx Seite "lebt" nur jeweils pro Aufruf, d.h. Membervariablen musst Du bei jedem Aufruf der Seite füllen.

369 Beiträge seit 2006
vor 17 Jahren

Um Daten, die nicht in globalen statischen Variablen (in global.asax), gespeichert sind, über einen Postback hinweg zu erhalten musst du den Viewstate verwenden. Ein guter Artikel zu dem Thema findet sich hier: http://infinitiesloop.blogspot.com/2006/03/truly-understanding-viewstate.html

M
modulo Themenstarter:in
24 Beiträge seit 2004
vor 17 Jahren

Hi!

@Kia
Wie soll ich das machen, wenn die Daten zufällig generiert werden? Im DataGrid bzw in seinem Viewstate müssten sie noch zu finden sein aber ich hab mich gefragt, ob das nicht etwas "dirty" ist.

@Kabelsalat
Danke für den Link, werde ich mir zu gemüte führen. Ich dachte mir schon das ich wohl darauf zurück greifen muss.

Btw. gibt es im "neuen" (2.0er) Framework irgendwelche Neuerungen in diesem Bereich?

Dankbare Grüße
Olli

3.170 Beiträge seit 2006
vor 17 Jahren

Hallo,
Schau dir mal Sessions an. (HttpSessionState & co.).
Deine Pagehat einen Member namens Session, der ist für sowas gedacht.



DataTable meineDataTable;

Page_Load()
{
  if(Session["meineDaten"]=null)
  {
    // Daten generieren
    
    Session["meineDaten"] = meineDataTable;
  }
  else
  {
    meineDataTable = Session["meineDaten"]
  }
}

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

1.130 Beiträge seit 2005
vor 17 Jahren

Original von Kabelsalat
Um Daten, die nicht in globalen statischen Variablen (in global.asax), gespeichert sind, über einen Postback hinweg zu erhalten musst du den Viewstate verwenden. Ein guter Artikel zu dem Thema findet sich hier:
>

Das Viewstate ist nicht dafür gedacht um Nutzerdaten zu halten, dafür sind Sessions oder das Caching da.

1.130 Beiträge seit 2005
vor 17 Jahren

Original von modulo
@Kia
Wie soll ich das machen, wenn die Daten zufällig generiert werden? Im DataGrid bzw in seinem Viewstate müssten sie noch zu finden sein aber ich hab mich gefragt, ob das nicht etwas "dirty" ist.

Kia? Auto? 😁

Die gebundenen Daten eine DataGrids bleiben auch erhalten, allerdings nur so lange bis wieder neue Daten gebunden werden. Membervariablen halten keine Daten.

369 Beiträge seit 2006
vor 17 Jahren

Hast natürlich recht! Ich sollte die Beiträge demnächst gründlicher lesen... ändert aber nichts daran, dass der Artikel nicht schlecht ist^^