2008-10-26 11 views

Répondre

9

Essayez ceci:

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" onKeyUp="this.blur();"> 

Avec onKeyUp = "this.blur();" Le contrôle perdra le focus lorsqu'une touche n'est pas pressée, ce qui déclenchera l'événement onChange.

+0

Cependant, cette solution peut être agréable, vous êtes en train de tuer des fonctionnalités, si vous avez une liste avec 10 éléments et que l'utilisateur décide de naviguer au clavier, il quitte la liste déroulante chaque fois qu'il clique haut ou bas. est-il possible de faire onKeyUp = "this.blur(); this.focus();" ? – Sander

+0

même si cela n'a pas fonctionné pour moi. Mais vaut la peine d'essayer et de prendre note :) – Shinigamae

0

Je pense que vous devez quitter le contrôle si vous utilisez le clavier pour déclencher l'événement.

+0

Y at-il de toute façon que ce soit tiré directement sur la flèche haut/bas? – leora

0

Si vous voulez que cela fonctionne avec les touches fléchées, vous devez utiliser l'événement côté client, onKeyDown.

+0

pouvez-vous me donner un exemple de comment cela fonctionnerait. . et comment cela peut ensuite poster sur le serveur pour des actions – leora

10

Définissez la propriété 'AutoPostBack' du contrôle DropDownList à 'vrai.

<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"> 
</asp:DropDownList> 

Voir ListControl.AutoPostBack Property on MSDN pour plus d'infos

Obtient ou définit une valeur indiquant si une publication sur le serveur se produit automatiquement lorsque l'utilisateur modifie la sélection de liste.

+0

Merci! Cela a fonctionné pour moi! – John