sur Je veux être en mesure de trouver l'ancienne valeur d'un contrôle asp.net (zone de texte, case à cocher, etc.) sans compter sur les événements (par exemple l'événement OnTextChange). Quelque chose comme "someTextboxControl.OldText" serait parfait! J'imagine qu'il est stocké dans le viewstate et le besoin d'une certaine façon à obtenir via un contrôle personnalisé. Des idées?Obtenir l'ancienne valeur d'un contrôle asp.net postback
0
A
Répondre
3
La réponse fournie par Shrage a été utile, mais il a fallu des recherches supplémentaires pour que cette solution fonctionne. J'ai placé son code dans le code derrière l'espace de noms de la page sur laquelle je travaillais. De plus, j'ai dû enregistrer le contrôle, et modifier la mise à jour du contrôle en question.
registre étendu textboxex contrôle; cela va juste en dessous de la directive page
<%@ Register TagPrefix="group" Namespace="ESM_Web_Portal" Assembly="ESM Web Portal" %>
Mise à jour du TexBox que vous souhaitez étendre dans la page ASPX
<group:TextBoxEx ID="txbEditPartNumber" runat="server" Text='<%# Bind("part_number") %>'></group:TextBoxEx>
Puis dans le code derrière j'ai pu utiliser le contrôle TextBox étendu
protected void CheckForExistingPartNumber(object sender, ServerValidateEventArgs e)
{
CustomValidator cv = ((CustomValidator)sender);
TextBoxEx tb = (TextBoxEx)cv.Parent.FindControl(cv.ControlToValidate);
if (SupplyBLL.GetSupplyByPartNumber(e.Value) != null && tb.Text != tb.OldText)
{
e.IsValid = false;
}
}
0
public class TextBoxEx:System.Web.UI.WebControls.TextBox
{
public string OldText { get; set; }
protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
OldText = Text;
return base.LoadPostData(postDataKey, postCollection);
}
}