Avatar billede dpouls1 Nybegynder
28. oktober 2004 - 09:42 Der er 5 kommentarer og
1 løsning

Viewstate i textbox kontra JavaScript

Jeg har 2 textboxe som virker fint med viewstaten hver for sig.

Når jeg udfylder textbox1 fyres et Javascript af som udfylder den textbox2 med det indtastede.

Problemet er at textbox2 ikke behøver værdien når der laves et postback, selvom textbox2 indeholder det samme som textbox1.

Er der noget bestemt man skal tage højde for iht. Javascript?
Avatar billede snepnet Nybegynder
28. oktober 2004 - 09:49 #1
hej :o)

jeg tror ikke jeg helt forstår det... hvis ændringer i textbox1 reflekteres i textbox2... så vil du vel ikke resikere at felterne ikke indeholder samme værdi i forbindelse med et postback ?

jeg er ikke helt med på hvad det er der er problemet, og hvad det er du mener du kan resikere.

kan du give et par hints til ?

mvh
Avatar billede dpouls1 Nybegynder
28. oktober 2004 - 10:03 #2
Jeg ønsker netop at textbox1 og textbox2 indeholder det samme efter et evt. postback, dog skal textbox2 udfyldes ud fra hvad der udfyldes i textbox1 løbende.

Jeg kan se i kodebehind at værdien i textbox2 er korrekt før postback, men den bibeholdes ikke i feltet efter et postback. Værdien i textbox1 bibeholdes.

Hvordan kan jeg sørge for at værdien i textbox2 (som er sat vha Javascript) bibeholdes efter et postback?
Avatar billede snepnet Nybegynder
28. oktober 2004 - 10:20 #3
det skulle der ikke være nogle problemer i... prøve nedenstående eksempel :

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace EXP2.ScriptSample
{
    public class Sample : System.Web.UI.Page
    {
        protected HtmlForm Form1;

        protected System.Web.UI.WebControls.TextBox tb1;
        protected System.Web.UI.WebControls.TextBox tb2;
   
        private void Page_Load(object sender, System.EventArgs e)
        {
            tb1 = new TextBox();
            tb2 = new TextBox();
            tb2.ID = "tb2";
            tb1.Attributes.Add("onchange","document.getElementById('tb2').value = this.value;");

            Form1.Controls.Add(tb1);
            Form1.Controls.Add(tb2);

            Button btn = new Button();
            btn.Click += new EventHandler(btn_Click);

            Form1.Controls.Add(btn);
        }

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }

        private void btn_Click(object sender, EventArgs e)
        {
            // vi gør ikke noget her, men værdien skulle stadig gerne bevares
        }
    }
}

det er kun lavet i code-behind, så du skal ikke lave noget i aspx-en for at få det til at virke.

jeg går du fra at du har sikret dig at viewstate er true på begge tekstbokse.

mvh
Avatar billede snepnet Nybegynder
28. oktober 2004 - 10:21 #4
Du kan sikre at værdierne bliver ens, selvom scriptet skulle fejle ved også at sætte værdierne = hinanden på serveren i klik-handleren :

private void btn_Click(object sender, EventArgs e)
{
  tb2.Text = tb1.Text;
}

mvh
Avatar billede dpouls1 Nybegynder
28. oktober 2004 - 14:41 #5
Jeg har selv gjort på samme måde, men havde ikke taget højde for at "textboxt2.enabled=false;" disabler evnen til at bibeholde værdien. Jeg har prøvet at disable textbox2 via JavaScript som det sidste på siden, men det bliver åbenbart stadig parset og får derfor ikke lov til at beholde værdien.

Nu har jeg i stedet benyttet textbox2.readonly=true som løser problemet.

Din løsning var korrekt, så smid et svar :o)
Avatar billede snepnet Nybegynder
28. oktober 2004 - 14:48 #6
et svar skal du få :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