Avatar billede cogitans Nybegynder
23. juli 2005 - 11:13 Der er 26 kommentarer og
1 løsning

Hvordan henvises der til tal i JScript-element gennem FORM?

Hvordan henvises der til tal i JScript-element gennem FORM?

Jeg har lavet et jscript, som tæller op i sekunder. Som sekunderne går, skal der hver gang der går 1 sekund, laves et postback, så der udføres nogle beregninger i ASP.NET. Hvordan gøres dette?

I FORM-elementet har jeg prøvet at skrive:
<%int a=jscriptcounter;%>
<form id="Form1" method="post" runat="server">
    <cc2:Bar id="Bar1" runat="server" Percentage="<%a%>"></cc2:Bar>
</form>
men det hjælper ikke...
Avatar billede roenving Novice
23. juli 2005 - 11:18 #1
postback en gang i sekundet ?-)

-- har du da aldrig mere end een på den side du laver ?o]

-- og hvilke beregninger skal du lave, for umiddelbart lyder det som om det ville være lettere at lave dem i javascript og så lave en postback f.eks. hvert 30. sekund, hvis det stadig er nødvendigt !-)
Avatar billede cogitans Nybegynder
23. juli 2005 - 11:30 #2
Ved et tilfælde kan der vel godt være flere brugere på siden ad gangen. Men da det er i ASP.NET, er det vel sessionsbasseret, hvorfor der vel ikke sker noget ved det.

Grunden til at det kun er 5 sekunder, det omhandler er, at der skal laves noget grafisk for hvert sekund, der er tale om. Antal sekunder er sådan set lige gyldigt. Humlen er, at der skal sendes et argument med antal sekunder, siden begyndelsen, til den grafiske udregning. Og dette kald fortages jo i FORM-elementet. Altså skal form-elementet kalde en grafisk udregning ved hjælp af et argument fra jscrpt'et.
Avatar billede roenving Novice
23. juli 2005 - 11:44 #3
Hvis du skriver siden fra serveren hver gang kan du vel bare skrive tallet en op i det argument, som bruges til postback ?-)
Avatar billede cogitans Nybegynder
23. juli 2005 - 12:05 #4
Det er vel også det, jeg prøver i "Percentage=<%a%>" ?
Avatar billede roenving Novice
23. juli 2005 - 12:06 #5
Du kan vel uden problemer tælle den op serverside ?-)
Avatar billede cogitans Nybegynder
23. juli 2005 - 12:08 #6
Kan man gøre det, så der ikke bliver alt for meget dataudveksling (senden frem og tilbage) ?
Hvordan kan det gøres?
Avatar billede roenving Novice
23. juli 2005 - 12:14 #7
Hvorfor er det overhovedet nødvendigt at beregne server-side, det er vel de samme 5 grafikstumper, der skal benyttes hver gang ?-)
Avatar billede cogitans Nybegynder
23. juli 2005 - 12:25 #8
Fordi grafikdelen bliver importeret gennem en fil med genbrugskode. Der skal så sendes et argument, som er antal sekunder, til denne kode.
Avatar billede roenving Novice
23. juli 2005 - 12:34 #9
Jeg spørger, fordi du, hvis det alligevel er det samme, som bruges hver gang, ligesågodt kan sende det hele med det samme, og så lave en lille stump javascript, som benytter sig af grafikken !-)
Avatar billede cogitans Nybegynder
23. juli 2005 - 12:41 #10
Er det ikke også det, jeg gør i "Percentage=<%a%>" ?
Det er jo vha. "Percentage"-variablen, at grafikken udregnes...
Avatar billede roenving Novice
23. juli 2005 - 12:53 #11
Bare for at illustrere en progress-bar:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<script type="text/javascript">
window.onload = function(){timer=setInterval('progress()',100);};
var t = 0,timer;
function progress(){
  t++;
  document.getElementById('bar').style.width = t + "%";
  if(t==100){
    clearInterval(timer);
    document.getElementById('bar').innerHTML = "-- FINISHED --";
  }
}
</script>
<title>Progressbar</title>
</head>
<body>
<div style="width:300px;height:20px;padding:2px;border:1px solid red;">
  <div id="bar" style="color:white;text-align:center;height:20px;background-color:blue;width:0%;">&nbsp;</div>
</div>
</body>
</html>
Avatar billede cogitans Nybegynder
23. juli 2005 - 13:06 #12
Jo, men jeg vil gerne benytte den importerede kode i mit projekt. Det er faktisk det, der er hele idéen med det. Derfor skal progressbar'en laves i codebehind og ikke i script eller andet.
Avatar billede roenving Novice
23. juli 2005 - 13:09 #13
Hvad indeholder den kode da ?-)

-- kan du ikke lade din kode producere et antal images, som kan sendes afsted med det samme ?o]

-- for hvis du skal spørge serveren hele tiden, kan du jo under ingen omstændigheder minimere frem-og-tilbage-sendelsen af data !-)
Avatar billede cogitans Nybegynder
23. juli 2005 - 13:15 #14
Koden indeholder skam ikke noget specielt. Jeg vil bare implementere funktionalitetten gennem den importerede kode. Og så er det sådan set ligegyldigt, hvor meget datatransmission der bliver tale om.
Men koden er jo, som den er. Den eneste måde, at koden kan kaldes på, er gennem "Percentage=tal". Skulle dette ikke kunne lade sig gøre?
Avatar billede roenving Novice
23. juli 2005 - 13:17 #15
Jo, det skulle der da ikke være noget galt i !-)
Avatar billede cogitans Nybegynder
23. juli 2005 - 13:21 #16
...men...hvordan gøres det så? Hvordan sender jeg argumentet gennem FORM-elementet?
Avatar billede roenving Novice
23. juli 2005 - 13:31 #17
Du skal vel have fat i en event, som fyres af ved postback ?-)

-- men da variablen er helt uafhængig af hændelser på klienten, kan du vel med fordel opbevare den i en session-variabel ?o]
Avatar billede cogitans Nybegynder
23. juli 2005 - 13:38 #18
Jeg skal vel have lavet et event, som forårsager et postback. Men derfra ved jeg ikke, hvordan jeg så kommer videre.
Avatar billede cogitans Nybegynder
23. juli 2005 - 14:43 #19
Nu er jeg ved at have en løsning. Men dertil skal jeg lige høre, hvordan er det nu, at man sætter hele aplikationen til at vente/sove lidt? Er det noget med this.sleep() eller sådan noget?
Avatar billede roenving Novice
23. juli 2005 - 14:54 #20
Såvidt jeg husker er det noget Thread.Sleep elle Wait, men jeg har kun lige set det på en slide for nogle måneder siden ...
Avatar billede cogitans Nybegynder
23. juli 2005 - 15:08 #21
Ja, jeg har fundet et eksempel i mellemtiden. Men det virker stadig ikke. Tråden bliver talt fint op og det hele. Grafikken bliver bare ikke opdateret for hele løkken er kørt igennem.

private void counter()
{
    for(i=0; i<100; i++)
    {
        ProgressBar1.PercentageOfProgress=i;
        Thread.Sleep(100);
    }
}

HVordan kan dette være? Kan (og skal) man tvinge siden til at blive opdateret ind i mellem opdateringen af "i"?
Avatar billede roenving Novice
23. juli 2005 - 15:13 #22
Du er vel nødt til at lade browseren kalde serveren for at opdatere den ?-)
Avatar billede cogitans Nybegynder
23. juli 2005 - 15:16 #23
Ja, det mente jeg jo nok. Det var derfor, jeg helst ville lave hele koden på klienten. Har du et kodeeksempel på, hvordan dette kan løses?
Avatar billede roenving Novice
23. juli 2005 - 15:24 #24
setTimeout('location.reload(true)',100);
Avatar billede olebole Juniormester
23. juli 2005 - 17:32 #25
<ole>

- kalde siden hvert 1/10 sekund .... så er det da nemmere at skrive sit server-login på et hacker-site. De er nok længere om at lægge serveren ned - men man bliver fri for selv at skrive kode, der gør  ;o)

/mvh
</bole>
Avatar billede cogitans Nybegynder
11. oktober 2005 - 13:42 #27
lukkes
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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