Avatar billede Lars Søndergaard Nybegynder
08. september 2005 - 18:19 Der er 19 kommentarer og
1 løsning

Kan ikke gemme tekst fra textbox

Jeg vil gemme teksten fra en textbox når jeg klikker på en button, men når det sker udføres min metode ikke. I stedet henter den siden igen og teksten er det samme som før.

Jeg plejer ikke have problemer.. kan ikke huske havd problemet er da det er længe siden jeg har arebjdet med Web programmering...
Avatar billede softspot Forsker
08. september 2005 - 18:32 #1
Med mindre du ændrer teksten i postback-processen, så vil den være det samme som da du postede. Derfor kan du godt have aflæst værdien alligevel...

Kan du evt. specificere yderligere hvad det er du har af kode og hvad det er du vil opnå?
Avatar billede Lars Søndergaard Nybegynder
08. september 2005 - 18:57 #2
jeg vil blot opdatere et password:

ASPX:
<asp:button id="button_change_password" text="Update" runat="server" onclick="UpdatePassword"></asp:button>

ASPX.CS:
protected Button button_change_password;

public void UpdatePassword(object sender, System.EventArgs e)
{
CallDataBaseScript.UpdatePassword(textbox_password.Text);
}
Avatar billede softspot Forsker
08. september 2005 - 19:32 #3
Det er fordi en TextBox af typen Password ikke umiddelbart kan ændres programmatisk.

Jeg har dog set en metode til dette et eller andet sted herinde på eksperten for nylig. Det var noget med at tage fat i HTML-elementets attributter og sætte value direkte. Jeg tror det er noget á la:

txtPass.Attributes["value"] = "nytpass";
Avatar billede Lars Søndergaard Nybegynder
08. september 2005 - 21:41 #4
jamen det er bare en alm textbox... den står ikke til password mode... det er noget med postback som udføres inden indhold af tekstboksen gemmes :(
Avatar billede softspot Forsker
08. september 2005 - 22:01 #5
Sorry, jeg fokuserede bare på ordet password og antog med det samme at det var en password-kontrol (selvom der jo ikke var ret meget der skulle læses for at finde sandheden :|...).

Hvis jeg lige læser dit oprindelige spørgsmål igen, lyder det som om din funktion ikke er bundet op mod onclick-eventet på knappen. Bruger du Visual Studio.NET? Eller er det et andet udviklingsmiljø?

Hvis det er VS.NET, kan du skifte over i designeren og dobbeltklikken på knappen og lægge koden i den kode-skal som VS opretter for dig i codebehind. Alternativt skal du selv tilføje eventet i InitializeComponent:

this.button_changed_password.Click += new System.EventHandler(this.UpdatePassword);
Avatar billede Lars Søndergaard Nybegynder
08. september 2005 - 23:35 #6
yesyes. jeg har en event på knappen som du kan se i min kode ovenfor.. den affyres også fint men data i min textbox reloades blot.. jeg forestiller mig at den reloades og gemmes som samme text
Avatar billede softspot Forsker
08. september 2005 - 23:43 #7
Har du angivet AutoEventWireup="true" i page-directive på din side så...?
Avatar billede softspot Forsker
08. september 2005 - 23:44 #8
CRAP! Du siger jo den fyres! Nu skal jeg snart til at forstå - ikke kun læse... :(
Avatar billede softspot Forsker
08. september 2005 - 23:45 #9
Jeg kan dog ikke se noget kode der påvirker knappen button_change_password.Text, men det har du sikkert liggende et eller andet sted... eller hvad?
Avatar billede softspot Forsker
08. september 2005 - 23:48 #10
...men det ville jo i så fald også være knappens tekst du ville ændre... hvilket jo nok ikke var et du ville... (mon jeg snart skulle gå i seng!?)...
Avatar billede softspot Forsker
08. september 2005 - 23:50 #11
Har du prøvet at ændre din knap-funktion til bare at ændre teksten direkte:

public void UpdatePassword(object sender, System.EventArgs e)
{
  textbox_password.Text = "ny tekst";
}

Så kan du i det mindste få skærpet fokus på hvor du skal kigge (hvis dette altså opdaterer teksten).
Avatar billede Lars Søndergaard Nybegynder
09. september 2005 - 09:17 #12
Uanset om AutoEventWireup er sat til true eller false virker det ikke.. Hvis jeg INTET udfører i min metode sker følgende.. I min textbox står der "HEJ" når siden er loaded, og skriver feks. "test" og trykker på Update, står der igen "HEJ" i min textbox...
Avatar billede Lars Søndergaard Nybegynder
09. september 2005 - 09:19 #13
det skal måske lige siges at funktionen udføres på en webusercontrol som er inlejet i en alm aspx side. jeg ved ikke om det har noget at sige... men det tror jeg ikke
Avatar billede softspot Forsker
09. september 2005 - 09:34 #14
Du er nok nød til at lukke lidt op for godteposen og vise den kode du har lavet (og den som Visual Studio har lavet for dig (hvis det da ellers er den du bruger).
Avatar billede Lars Søndergaard Nybegynder
09. september 2005 - 11:17 #15
jeg har jo posted min kode.. der er stort set ikke andet end det i min anden post.. det er ufattelig simpelt...

Koden er på en webusercontrol:

ASCX:

<%@ Control Language="c#" AutoEventWireup="false" Codebehind="Account.ascx.cs" Inherits="x.WebControls.Account" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>

<asp:textbox id="textbox_password" width="260" runat="server" cssclass="textbox_default" style="Z-INDEX: 104; LEFT: 40px; POSITION: absolute; TOP: 108px"></asp:textbox>

<asp:button id="button_change_password" cssclass="button_default" text="Update" runat="server" onclick="UpdatePassword" style="Z-INDEX: 104; LEFT: 40px; POSITION: absolute; TOP: 338px"></asp:button>


ASCX.CS:

namespace x.WebControls
{
    using System;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    /// <summary>
    ///        Summary description for Account.
    /// </summary>
    public class Account : System.Web.UI.UserControl
    {
        public TextBox textbox_password;
       
        private void Page_Load(object sender, System.EventArgs e)
        {
        cls_CookieUtil c_cooke    = new cls_CookieUtil();
        c_user = new cls_User(c_cooke.UserIdTemp);
                textbox_password.Text = c_user.Password;
        }

        #region Web Form Designer generated code
       
        public void UpdatePassword(object sender, System.EventArgs e)
        {
          textbox_password.Text = "TEST";
        }
    }
}
Avatar billede softspot Forsker
09. september 2005 - 11:32 #16
Prøv at fjerne onclick-attributten på knappen i ascx-filen og ændre koden til codebehind til:


namespace x.WebControls
{
    using System;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    /// <summary>
    ///        Summary description for Account.
    /// </summary>
    public class Account : System.Web.UI.UserControl
    {
        public TextBox textbox_password;
        public Button button_change_password;
       
        private void Page_Load(object sender, System.EventArgs e)
        {
          cls_CookieUtil c_cooke = new cls_CookieUtil();
          c_user = new cls_User(c_cooke.UserIdTemp);
          textbox_password.Text = c_user.Password;
        }

        #region Web Form Designer generated code
       
        public void UpdatePassword(object sender, System.EventArgs e)
        {
          textbox_password.Text = "TEST";
        }
    }
}

og så tilføj denne linie i funktionen InitializeComponent i [#region Web Form Designer generated code]

  this.button_change_password.Click += new EventHandler(this.UpdatePassword)
Avatar billede Lars Søndergaard Nybegynder
09. september 2005 - 13:42 #17
Den linje behøves ikke.. her er løsningen (Jeg store idiot.. jeg vidste det var noget med postback, men jeg syns jeg havde testet det)

ASCX.CS:

namespace x.WebControls
{
    using System;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    public class Account : System.Web.UI.UserControl
    {
        public TextBox textbox_password;
       
        private void Page_Load(object sender, System.EventArgs e)
        {
          if(!Page.IsPostBack)
          {
            cls_CookieUtil c_cooke    = new cls_CookieUtil();
            c_user = new cls_User(c_cooke.UserIdTemp);
            textbox_password.Text = c_user.Password;
          }
        }

        #region Web Form Designer generated code
       
        public void UpdatePassword(object sender, System.EventArgs e)
        {
          textbox_password.Text = "TEST";
        }
    }
}

tsk tsk tsk jeg skammer mig... :(
Avatar billede Lars Søndergaard Nybegynder
09. september 2005 - 13:42 #18
men softspot... tak for din tid...
Avatar billede softspot Forsker
09. september 2005 - 13:44 #19
Det undrer mig lidt at det er postback der giver problemet, for når du klikker på knappen, bliver det event udført efter page_load og værdien vil derfor blive sat til TEST i dette tilfælde...
Avatar billede softspot Forsker
09. september 2005 - 13:45 #20
Velbekomme...
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