Avatar billede shadowdance Nybegynder
08. december 2005 - 16:40 Der er 5 kommentarer og
1 løsning

Rækkefølge af hændelser

Hej.

Jeg er newbie i .NET, så vær blid! Jeg har lavet en kontrol, en datoboks:

----------------------
<%@ Control Language = "VB" Debug = "true" %>
<script runat="server">
    Sub Page_Load(Byval sender as Object, Byval e As EventArgs)
        if not Page.IsPostBack then
           
            listDay.Items.Add(new ListItem("---","0"))
           
            for i as integer = 1 to 31
                listDay.Items.Add(new ListItem(Convert.ToString(i),Convert.ToString(i)))
            next i
           
            listMonth.Items.Add(new ListItem("---","0"))
            listMonth.Items.Add(new ListItem("januar","1"))
            listMonth.Items.Add(new ListItem("februar","2"))
            listMonth.Items.Add(new ListItem("marts","3"))
            listMonth.Items.Add(new ListItem("april","4"))
            listMonth.Items.Add(new ListItem("maj","5"))
            listMonth.Items.Add(new ListItem("juni","6"))
            listMonth.Items.Add(new ListItem("juli","7"))
            listMonth.Items.Add(new ListItem("august","8"))
            listMonth.Items.Add(new ListItem("september","9"))
            listMonth.Items.Add(new ListItem("oktober","10"))
            listMonth.Items.Add(new ListItem("november","11"))
            listMonth.Items.Add(new ListItem("december","12"))
           
            listYear.Items.Add(new ListItem("---","0"))
           
            for i as integer = ((DateTime.Now).AddYears(-100)).Year to ((DateTime.Now).AddYears(5)).Year
                listYear.Items.Add(new ListItem(Convert.ToString(i),Convert.ToString(i)))
            next i
           
        end if
    End Sub
   
    Sub initialize(dt as DateTime)
       
        listDay.Items(dt.Day).Selected = true       
       
    End Sub
   
</script>
<asp:DropDownList ID="listDay" runat="server"></asp:DropDownList>
<asp:DropDownList ID="listMonth" runat="server"></asp:DropDownList>
<asp:DropDownList ID="listYear" runat="server"></asp:DropDownList>
---------------------------------------

Problemet er, at når jeg kalder initialize(dt as DateTime), så har den tilsyneladende ikke fyldt kontrollerne med options endnu, for længden er 0. Så jeg får en 'index out of bounds' fejl.

Hvad skal jeg gøre?
Avatar billede snepnet Nybegynder
08. december 2005 - 17:01 #1
ja - du skal hellere bytte om på det ... altså lægge den kode vedr. listen du har i page_load ned i init, og så flytte det du har i init op i page_load

init kører før page_load ... du kan se hele sekvensen her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconControlExecutionLifecycle.asp

mvh
Avatar billede shadowdance Nybegynder
08. december 2005 - 17:07 #2
Nej, for bemærk: det er ikke den præ-definerede metode init. Jeg kunne have sagt mig selv at jeg ville komme til at ramme en præ-defineret metode. Men sagen var, at jeg ville kalde metoden fra den implementerende sides Page_Load metode manuelt. Så i 'default.aspx' har jeg:

Sub Page_Load(sender as Object,e as EventArgs)

  mylist.initialize(DateTime.Now())

End Sub
Avatar billede snepnet Nybegynder
08. december 2005 - 17:14 #3
sorry .. var lidt der :o(
hvorfor vil du kalde den fra siden page_load?
og .... prøv at læg den kode der opbygger listen i OnInit istedet.
mvh
Avatar billede snepnet Nybegynder
08. december 2005 - 17:14 #4
(var lidt hurtig der - skulle der have stået)
mvh
Avatar billede shadowdance Nybegynder
08. december 2005 - 17:16 #5
Undskyld, du havde ret alligevel. Jeg blev bare lige lidt forvirret, fordi jeg havde navngivet metoden efter en allerede defineret hændelse... men nu er jeg med. Point?
Avatar billede snepnet Nybegynder
08. december 2005 - 17:18 #6
jamen du får da et svar så :o)
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester