Gültigkeitsbereich von Variablen



  • Hallo

    In dem Folgenden Beispiel habe ich das Problem das in der Methode "Button2_Click" die datatable dt leer ist obwohl ich die Methode "Button1_Click" zufor schon aufgerufen habe.
    Hänge ich dt direkt bei "Button1_Click" an das GridView bekomm ich die Daten angezeigt. Bei "Button2_Click" nicht.

    Kann mir jemand erklären warum das so ist?
    Normalerweise müsste ich doch von überall aus der klasse auf dt zugreifen können wenn dt einmal befüllt wurde?

    public partial class myclass : System.Web.UI.Page
    {
    
        // Datatables 
        private DataTable dt;
    
        protected void Button1_Click(object sender, EventArgs e)
        {        
            dt = myclass2.filldatatable();
         }
    
        protected void Button2_Click(object sender, EventArgs e)
        {        
                GridView1.DataSource = dt;
                GridView1.DataBind();
         }
    
    }
    

    Danke

    Gruß



  • Normalerweise müsste ich doch von überall aus der klasse auf dt zugreifen können wenn dt einmal befüllt wurde?

    Du kannst auch überall aus der Klasse auf dt zugreifen wenn dt nicht gefüllt ist..
    Also an der Sichtbarkeit deiner Variable liegts nicht, ich könnte jetzt aber auch nicht sagen woran das liegt. Vielleicht ist woanders etwas falsch was dieses komsiche verhalten hervorruft ?



  • Anfänger32 schrieb:

    public partial class myclass : System.Web.UI.Page
    

    Daran liegts.
    Pages haben einen komplett anderen Lebenszyklus als Forms.



  • µ schrieb:

    Anfänger32 schrieb:

    public partial class myclass : System.Web.UI.Page
    

    Daran liegts.
    Pages haben einen komplett anderen Lebenszyklus als Forms.

    Und was heißt das für mich?



  • Der zweite Buttonclick erzeugt ein neues Page-Objekt.

    Du könntest die Data-Table z.B. in die Session-Variable einfügen:
    http://msdn.microsoft.com/en-us/library/ms178581.aspx



  • Hallo

    Danke soweit.
    Das war auch mein bisheriger Workaround.
    Ich dachte das könnte man vielleicht etwas eleganter lösen.

    Gruß


Anmelden zum Antworten