2009-09-16 6 views
0

je la liste déroulante suivante qui utilise la boîte à outils Ajax pour fournir une zone de liste déroulanteJavascript pour le feu événement quand une touche enfoncée sur la zone de liste déroulante Ajax Toolkit

<cc1:ComboBox ID="txtDrug" runat="server" style="font-size:8pt; width:267px;" 
               Font-Size="8pt" DropDownStyle="DropDownList" 
               AutoCompleteMode="SuggestAppend" AutoPostBack="True" 
               ontextchanged="txtDrug_TextChanged" /> 

Maintenant je dois charger ce avec environ 7 000 enregistrements, ce qui prend beaucoup de temps et affecte les temps de réponse lorsque la page est affichée dans les deux sens.

Le code qui charge ces enregistrements est le suivant;

   dtDrugs = wsHelper.spGetAllDrugs(); 

       txtDrug.DataValueField = "pkDrugsID"; 
       txtDrug.DataTextField = "drugName"; 
       txtDrug.DataSource = dtDrugs; 
       txtDrug.DataBind(); 

Cependant si je pouvais obtenir un événement au feu quand une lettre est tapée au lieu d'avoir à charger 7000 dossiers, il est réduit à moins de 50 dans la plupart des cas.

Je pense que cela peut être fait en Javascript. La question est donc comment puis-je déclencher un événement de sorte que lorsque le formulaire commence, il n'y a rien dans le menu déroulant, mais dès qu'une touche est pressée, il recherche les enregistrements commençant par cette lettre.

Le côté .Net des choses dont je suis sûr - c'est le Javascript que je ne suis pas.

Merci à l'avance

Répondre

0

Je pense que ce que vous cherchez est AutoComplete extender attaché à une zone de texte, vous devez définir les propriétés suivantes pour fournir la source de données pour l'extension:

ServiceMethod="GetCompletionList" 
ServicePath="AutoComplete.asmx" 

AutoComplete .asmx est le lien vers votre service et GetCompletionList est votre méthode de service pour appeler, la signature de cette méthode doit correspondre à ce qui suit:

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public string[] 
GetCompletionList(string prefixText, int count) 
{ ... } 
1

Je ne pense pas que l'extension de saisie semi-automatique s'applique car elle est uniquement pour TextBox et non ComboBox. Je crois que Paul doit être capable de récupérer l'identifiant de l'objet sélectionné, chose qu'un TextBox ne peut pas fournir.

Questions connexes