Entwickler-Ecke

ASP.NET und Web - Page_Load und DropDownList


TheSoul - Mi 13.10.10 08:01
Titel: Page_Load und DropDownList
Guten Morgen allerseits!

Ich habe eine Frage betreffend einer DropDownList welche erst nach dem Page_Load geladen wird...

wenn ich während dem Page_Load, "DropDownList.Items.Count" mache, ist dieser noch bei 0.

Ich möchte jetzt die eine Funktion sobald ausführen, wenn die Seite komplett geladen ist.

Kennt ihr eine Möglichkeit?

Danke im Voraus

Gruss

TheSoul


traceurmicha - Mi 13.10.10 08:07

Also du willst erst die Seite komplett aufbauen lassen und erst danach noch eine Funktion ausführen?

Was spricht denn dagegen gleich alles im Page_Load zu machen?


TheSoul - Mi 13.10.10 08:10

Die DropDownList ist während dem Laden noch leer. Erst nach dem Laden sind die Items ansprechbar.


traceurmicha - Mi 13.10.10 08:15

hm, ich weiß jetz nicht ob das geht, aber mein erster Gedanke ist da einen Timer einzubauen.
Kann natürlich sein dass das Ganze nicht funktioniert, habs nit ausprobiert. Aber ich denke einen versuch ist es Wert!?


TheSoul - Mi 13.10.10 08:18

Timer scheint mir irgendwie nicht so passend...

Ich suche etwas wie PreInit, dass einfach nach dem Page_Load ausgeführt wird....

Etwas wie After_Load? :P


TheSoul - Mi 13.10.10 11:13

Ich habe die Unload-Funktion entdeckt.

Laut Microsoft "Nachdem die Seite vollständig gerendert und an den Client gesendet wurde und daher verworfen werden kann, wird das Unload-Ereignis ausgelöst.An dieser Stelle werden Seiteneigenschaften wie Response und Request entladen, und es werden sämtliche Bereinigungsoperationen ausgeführt."

Wieso kann ich nicht hier den DropDown.SelectedIndex setzen?


TheSoul - Mi 13.10.10 14:23

Hab gerade die Lösung mit dem Timer ausprobiert. Theoritsch klappst, leider ist es nicht brauchbar. Die Seite wird nach 1 Milisekunde(Interval vom Timer) nach dem Laden nochmal geladen.

Ist leider in einer produktiven Umgebung nicht brauchbar...

Gibt es keine anderen Möglichkeiten, wie ich das Umsetzen könnte?


traceurmicha - Mi 13.10.10 15:17

Gib uns doch mal ein wenig Code, vllt fälls einem von uns allen dann leichter dir nen lösungsvorschlag zu geben.

Edit:
ich hab mal ne asp Seite mit nur einer DropDownList gemacht und im Page Load:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
protected void Page_Load(object sender, EventArgs e)
        {
            int i = 0;
            for (; i < 11; i++)
            {
                ddl1.Items.Add(i.ToString());
            }
            ddl1.SelectedIndex = 3;
        }


Bei mir funktioniert das, oder hab ich dich nur falsch verstanden?


TheSoul - Do 14.10.10 08:00

Danke für deine Hilfe traceurmicha.

Theoretisch funktionierts bei mir ja auch. Das Problem ist, die DropDown Items werden erst am Schluss geladen. Deshalb musste ich eine Variante finden, welche den Code, nachdem die Seite geladen wird, ausführt. Ausser den Timer habe ich nichts gefunden.

Hier wird die DropdownList im ASP "gefüllt".


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
<asp:DropDownList ID="drpSalutation" runat="server" 
            DataSourceID="salutation_name" DataTextField="salutation_name" 
            DataValueField="salutation_name" Width="289px">
</asp:DropDownList>
<asp:SqlDataSource ID="salutation_name" runat="server" 
          ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
          SelectCommand="SELECT [salutation_name] FROM [tblSalutation]">


TheSoul - Do 14.10.10 13:38

Das Problem ist nun gelöst. Habe die DropDownList im cs File statt im aspx gefüllt.