2009-05-27 7 views

Répondre

1

tout en appelant __doPostBack directement fonctionnera, ce n'est pas une solution parfaite, car le nom de cette fonction est strictement un détail de mise en œuvre du cadre .Net.

Une meilleure solution consiste à utiliser ClientScriptManager.GetPostBackEventReference, ce qui vous donne une interface plus résiliente pour la même fonctionnalité. Notez que GetPostBackEventReference et GetCallBackEventReference ne sont pas la même chose - le premier provoque un rechargement de page (partiel ou complet, selon la façon dont vos UpdatePanels sont configurés), tandis que ce dernier ne le fait pas.

+0

Je ne suis pas sûr de comprendre comment l'utiliser. c'était ma tentative: btnedit.OnClientClick = ClientScript.GetCallbackEventReference (UpdatePanel1, "", "", "") & String.Format ("openModal ('{0}', '" & GridView1.Rows (i) .Cellules (0) .Texte & "'); return false; ", hidden.ClientID) Je ne sais pas quoi mettre en paramètres – Eric

+0

J'ai modifié ma réponse pour indiquer que vous voulez probablement un postback et non un rappel –

+0

Je suis un peu confus à propos de ce que vous essayez de faire: l'utilisateur fait-il quelque chose avec le résultat de openModal(), et c'est après avoir fait cela que vous voulez que la listbox se reconnecte? –

0

nous utilisons la méthode __doPostBack() qui simule un postback et provoque l'UpdatePanel pour rafraîchir

__doPostBack('controlName',''); 

Ne pas oublier que le nom de contrôle est son ID HTML (qui pourrait bien contenir des dollars, etc.) et non juste c'est ASP.NET ID.

Pour autant que je sais que vous pouvez appeler cette méthode et de passer dans le champ de la valeur cachée, ou div qu'il est.

+0

j'ai essayé de l'appeler comme ça __doPostBack ('<% = Upd atePanel1.ClientID%> ',' '); Est-ce ainsi que l'on appelle la méthode? – Eric

+0

-1: l'appel direct de __doPostBack est une mauvaise pratique. –

+0

Je sais pas tout le monde aime _doPostBack, mais s'il vous plaît expliquer pourquoi c'est une mauvaise pratique. C'est une pratique bien acceptée et largement utilisée, et tous les aspects négatifs de son utilisation, tels que la possibilité que _doPostBack soit déprécié, ne sont pas fondés. – tjmoore

1

La méthode la plus simple consiste à appeler __doPostBack du côté client.

Sur méthode Button1_onclick côté client, appelle:

__doPostBack('<%=UpdatePanel1.ClientID %>','Refresh:0,1,2'); //refresh update panel 

À la page ajouter derrière le gestionnaire d'événement suivant pour capturer l'appel après retour:

protected void UpdatePanel1_Load(object sender, EventArgs e) 
{ 
    string arg = Request.Form["__EVENTARGUMENT"]; 

    if (string.IsNullOrEmpty(arg)) return; 

    if (arg.StartWith("Refresh") 
    { 
     //parse data first then do your thing here... 
    } 
} 

Et bien sûr, ne pas oublier de fil événement à la méthode ci-dessus:

protected void Page_Init(object sender, EventArgs e) 
{   
    UpdatePanel1.Load += new EventHandler(UpdatePanel1_Load); 
} 
Questions connexes