2009-10-07 4 views
3

J'ai un panneau avec des zones de texte et un bouton de soumission, et un panneau de mise à jour qui est déclenché lorsque le bouton est enfoncé.UpdatePanel ne se déclenche pas lorsque vous appuyez sur Entrée

Si j'appuie sur le bouton, cela fonctionne normalement. Cependant, si j'appuie sur la touche Entrée d'un contrôle, il reporte la page entière.

Je définis le bouton comme bouton par défaut dans le panneau, mais il affiche toujours la page entière. Des idées?

Répondre

3

La définition d'un seul bouton sur un panneau par défaut est toujours un peu difficile. Je l'ai gardé une méthode dans une bibliothèque commune autour pour seulement cette question:

public static void EnterOnKeyDown(WebControl targetControl, WebControl controlToPress) 
{ 
    targetControl.Attributes.Add("onkeydown", 
     "if(event.which || event.keyCode){if ((event.which == 13)" + 
     "|| (event.keyCode == 13)) {document.getElementById('" + 
     controlToPress.ClientID + "').click();return false;}} else {return true};"); 
} 

Vous pouvez placer cette méthode partout où vous le souhaitez et l'appeler comme suit:

EnterOnKeyDown(someTextBoxInYourPanel, yourSubmitButton); 

Vous pouvez tout aussi bien utiliser le javascript ci-dessus seul sans le définir dans une méthode statique.

+0

Bahahahaha! Ça a marché! Tu es un génie! – NibblyPig

0

Dans les propriétés UpdatePanel, définissez les éléments suivants:

ChildrenAsTriggers = True UpdateMode = Toujours

Si vous faites cela, vous ne devez pas spécifier quand déclencher le panneau de mise à jour, il sera automatiquement être déclenché lorsque l'un de vos contrôles provoque une publication.

+0

Cela n'a pas fonctionné, il a toujours posté la page entière, j'imagine parce que cela ne fonctionne que si le bouton est dans le panneau de mise à jour. – NibblyPig

Questions connexes