dimanche 11 mai 2014

Comment afficher un contrôle après un PostBack en asp.net C# ?

En programmation traditionnelle, formulaire rafraîchi après un AutoPostBack sur un DropDownList par exemple, comment afficher le contrôle qui a commandé le lancement du formulaire, en particulier lorsque ce contrôle se trouve sur une partie non visible du formulaire (en dehors de l'écran visible) ?



Définir un contrôle dans la page .aspx :

<asp:DropDownList ID="pays" name="pays" runat="server" AutoPostBack="true" onselectedindexchanged="pays_SelectedIndexChanged"></asp:DropDownList>

Ajouter l'attribut HTML name="pays".

Dans le fichier .aspx.cs associé à la page .aspx, ajouter la méthode du changement d'index du DropDownList, à la place de traitement, effectuer le traitement nécessaire pour enregistrer la nouvelle valeur par exemple et ajouter les lignes suivantes pour afficher le contrôle dans la fenêtre de l'écran :

protected void pays_SelectedIndexChanged(object sender, EventArgs e)
{
        //traitement .....
       //retour au contrôle
        string csname1 = "RemarqueScript";
        Type cstype = this.GetType();
        ClientScriptManager cs = Page.ClientScript;
        string cstext1 = "window.location.href=window.location.href+'#pays';";
        cs.RegisterStartupScript(cstype, csname1, cstext1, true);
}