Avatar billede simsen Mester
13. februar 2011 - 19:55 Der er 1 løsning

ASP:Timer stopper med at "ticke"

Hej,

Jeg er igang med at lave en simpel chat side. Alt fungerede perfekt undtagen én ting....At IE ikke satte textboxen i fokus og gik til enden af den igangværende tekst. Jeg fandt så frem til at det var fordi, at min tekstbox var inde i UpdatePanel'en. Så jeg måtte omorganisere min aspx side..

Det har jeg så brugt 12 timer på indtil videre.....og fortsætter. For efter omorganisering - har jeg fået en fejl. På et tidspunkt stopper ASP.Timer med at "ticke" og dermed opdateres litMessages ikke længere - altså at gå ind i dens egen OnTick funktion.

Det vil sige, hvis jeg ikke skriver nogen besked, men bare logger ind i andre browsere - så ticker den korrekt og opdaterer pænt litMessages uden problem (= tickeren fungerer) hos den bruger, jeg åbnede IE med i første omgang...

Nu forsøger jeg så at skrive en besked......Den går også godt - bliver vist i litMessages....Måske ved 2. eller 3. gang jeg forsøger at skrive en besked stopper tickeren med at fungere.

Jeg kan så også efter at have klikket send når jeg har skrevet en besked se, at der er kommet en advarsel nederst på skærmen i IE...Når jeg åbner den står der;

Expected ';'
Chat.aspx Line: 346
Code: 0 Char: 20
Og så min url.

Det er forskelligt fra gang til gang hvilken linje den viser.....det er alt mellem ca. 330 og 350......

Så jeg er (vist) kommet frem til, det må være et eller andet i min BtnSend_Click metode der går galt (får siden til at fejle).....Jeg kan bare ikke se hvad - for alting går korrekt ind i databasen....

Jeg håber nogen kan hjælpe mig. Jeg er vist ved at blive temmelig gråhåret af det her problem :-) Har I brug for at se andet - siger I bare til :-)

Min BtnSend_Click metode:
protected void BtnSend_Click(object sender, EventArgs e)
    {
        Security security = new Security();

        if (txtMessage.Text.Length > 0)
        {
            this.InsertMessage(string.Empty, false);
            txtMessage.Text = String.Empty;

            ScriptManager.RegisterStartupScript(this.upanChat, typeof(string), "alertScript", "SetScrollPosition()", true);
            txtMessage.Focus();           
        }
    }

Min InsertMessage funktion:
private void InsertMessage(string message, bool isSystemMessage)
    {
        Security security = new Security();

        ChatMessages chatmessages = new ChatMessages();
        chatmessages.roomId = RoomId;
        chatmessages.UserId = security.UserIdByUserName(lblUserName.Text);
        chatmessages.isSystemMessage = isSystemMessage;

        if (string.IsNullOrEmpty(message))
        {
            chatmessages.message = txtMessage.Text;           

            if (security.IsModerator())
            {
                if (ddlMessageTo.SelectedIndex == 0)
                {
                    chatmessages.color = ChatModeratorMessageColor;
                }
                else
                {
                    chatmessages.color = ChatPrivateMessageColor;
                }
            }
            else
            {
                if (ddlMessageTo.SelectedIndex == 0)
                {
                    chatmessages.color = ChatMessageColor;
                }
                else
                {
                    chatmessages.color = ChatPrivateMessageColor;
                }
            }
        }
        else
        {
            chatmessages.message = message;
            chatmessages.color = ChatSystemMessageColor;
        }

        if (ddlMessageTo.SelectedIndex == 0)
        {
            chatmessages.toUserId = string.Empty;
        }
        else
        {
            chatmessages.toUserId = Convert.ToString(ddlMessageTo.SelectedValue);
        }
        chatmessages.timeStamp = DateTime.Now;
        chatmessages.IPAddress = security.IpAddress;

        chatmessages.NewChatMessage();
    }
Avatar billede simsen Mester
13. februar 2011 - 21:35 #1
1 1/2 times yderligere søgning fandt jeg løsningen dybt dybt inde......

Semicolon'et der mangler er i BtnSend_Click funktionen i linjen:

ScriptManager.RegisterStartupScript(this.upanChat, typeof(string), "alertScript", "SetScrollPosition();", true);

Der skulle et semikolon efter funktions navnet SetScrollPosition()

Og nu virker min ticker også (håber jeg da *griner*)
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
Kurser inden for grundlæggende programmering

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