donc j'ai une zone de texte sur mon site web:
<asp:TextBox ID="Latitude" runat="server" ClientIDMode="Static" ></asp:TextBox>
et au chargement de la page, je remplis cette zone de texte avec quelque chose d'une base de données:
protected void Page_Load(object sender, EventArgs e)
{
Latitude.Text = thisPlace.Latitude;
}
Mais lorsque je veux mettre à jour ma base de données avec une nouvelle valeur dans cette zone de texte, la base de données a quand même été mise à jour avec celle placée au chargement de la page:
protected void Save_Click(object sender, EventArgs e)
{
setCoordinates(Latitude.Text);
}
Est-ce normal? Comment puis-je m'assurer que setCoordinates () obtient la nouvelle valeur dans la zone de texte et non celle placée dans la zone de texte avec Latitude.Text = thisPlace.Latitude; ?
Je pense que c'est parce que PostBack
Si vous appelez setCoordinates()
sur le bouton de la souris, la nouvelle valeur de l'événement de clic sera perdue. Si c'est vrai, changez Page_Load
comme celui-ci
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
Latitude.Text = thisPlace.Latitude;
}
}
En effet, l'événement Page_Load
se produit avant que votre méthode setCoordinates
soit appelée. Cela signifie que la valeur Latitude.Text est la même que précédemment.
Vous devez modifier la fonction de chargement afin qu’elle ne définisse pas toujours la valeur initiale de la zone de texte.
En modifiant l'événement page_load avec !Page.IsPostBack
, la seule fois où la valeur initiale est donnée est le premier chargement de la page.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Latitude.Text = thisPlace.Latitude;
}
}
Page_Load
exécuté chaque fois que la page est chargée. Ajoutez la variable IsPostBack
pour réinitialiser le texte uniquement lors du chargement de la première page:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Latitude.Text = thisPlace.Latitude;
}
}
Vérifiez si la page est en publication sinon la valeur sera remplacée avant la sauvegarde.
If(!IsPostBack){
Latitude.Text = thisPlace.Latitude;
}
Vous devez obtenir les informations de la demande plutôt que d'utiliser la propriété de cette manière:
var theValue = this.Context.Request[this.myTextBox.ClientID];
Cela se produit si vous chargez de nouveau les valeurs initiales.
if (!IsPostBack)
{
//call the function to load initial data into controls....
}