it-swarm.com.de

Text von TextBox ändert sich nicht dahinter

ich habe also ein Textfeld auf meiner Website:

<asp:TextBox ID="Latitude" runat="server" ClientIDMode="Static" ></asp:TextBox>

und beim Laden der Seite fülle ich dieses Textfeld mit etwas aus einer Datenbank:

protected void Page_Load(object sender, EventArgs e)
{
    Latitude.Text = thisPlace.Latitude;
}

Wenn ich jedoch meine Datenbank mit einem neuen Wert in diesem Textfeld aktualisieren möchte, wurde die Datenbank immer noch mit demjenigen aktualisiert, der beim Laden der Seite eingegeben wurde:

protected void Save_Click(object sender, EventArgs e)
{
    setCoordinates(Latitude.Text);
}

Ist das normal? Wie kann ich sicherstellen, dass ich in setCoordinates () den neuen Wert aus der Textbox bekomme und nicht den, der in die Textbox mit Latitude.Text = thisPlace.Latitude; ?

19
jt123

Ich denke es ist weil PostBack

Wenn Sie setCoordinates() in einem Klickereignis-Textfeld einer Schaltfläche aufrufen, geht der neue Wert verloren. Wenn das richtig ist, Page_Load wie dieser ändern

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        Latitude.Text = thisPlace.Latitude;
    }    
}
30
Jaztingo

Dies liegt daran, dass das Page_Load-Ereignis auftritt, bevor Ihre Methode setCoordinates aufgerufen wird. Dies bedeutet, dass der Latitude.Text-Wert derselbe ist wie zuvor.

Sie sollten die Ladefunktion ändern, damit nicht immer der Anfangswert des Textfelds festgelegt wird. 

Wenn Sie das page_load -Ereignis mit !Page.IsPostBack ändern, wird der ursprüngliche Wert nur beim ersten Laden der Seite angegeben.

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack) 
    {
        Latitude.Text = thisPlace.Latitude;
    }
}
9
GercoOnline

Page_Load wird bei jedem Laden der Seite ausgeführt. Fügen Sie IsPostBack check hinzu, um den Text nur beim Laden der ersten Seite zurückzusetzen:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Latitude.Text = thisPlace.Latitude;
    }
}
5
PashaPash

Prüfen Sie, ob sich die Seite im Postback befindet. Andernfalls wird der Wert vor dem Speichern ersetzt

If(!IsPostBack){
    Latitude.Text = thisPlace.Latitude;
}
4
Steven

Sie müssen die Informationen aus der Anfrage abrufen, anstatt die Eigenschaft wie folgt zu verwenden:

var theValue = this.Context.Request[this.myTextBox.ClientID];
1
dav_i

Dies geschieht, wenn Sie die Anfangswerte erneut laden. 

if (!IsPostBack)
{
    //call the function to load initial data into controls....
}
0
hmrt