2017-09-18 3 views
0

J'utilise un extender autocomplete sur ma page Web asp.net pour récupérer des données lorsqu'un utilisateur commence à taper un nom de famille. Seulement quand il semble y avoir une tonne de résultats renvoyés, il ne laisse jamais l'utilisateur sélectionner un élément de la liste déroulante. Il recherche un nom de famille par état, donc si un utilisateur tape un nom de famille de 2 lettres tel que "Li", il pourrait y avoir beaucoup de résultats renvoyés. Est-il possible d'autoriser plus de résultats sans fermeture automatique?Asp.net Autocomplete Extender Déroulement fermeture si trop de résultats

<asp:AutoCompleteExtender ID="AutoCompleteExtender" runat="server" 
    DelimiterCharacters="" Enabled="True" ServicePath="AutoComplete.asmx" 
    ServiceMethod="GetCompletionList" TargetControlID="NameTextBox" 
    UseContextKey="true" ContextKey="StateDropDown" 
    onclientitemselected="getSelected" 
    ShowOnlyCurrentWordInCompletionListItem="True" CompletionInterval="100" 
    MinimumPrefixLength="2" CompletionListElementID="autocompleteDropDownPanel" 
    CompletionListCssClass="style101" OnClientShown="checkFocusOnExtender"> 

</asp:AutoCompleteExtender> 

Répondre

1

Nous sommes passés par même situation comme ça, je peux vous fournir les 2 solutions

Solution 1: essayez d'ajouter le Css pour l'unité d'extension de telle sorte qu'il défile, vous peut y parvenir en appliquant quelque chose comme ce qui suit:

.mycustom { 
Overflow: auto; 
    height: 100px; 
} 

Solution 2: vous pouvez régler le vous pouvez définir la propriété CompletionSetCount de ce contrôle, il affichera moins compte les éléments dans la liste déroulante. La valeur par défaut est 10. mais il y a un inconvénient pour cette solution, il y a des chances que l'utilisateur ne puisse pas trouver le résultat souhaité ou qu'il veuille explorer d'autres options. pour ce que vous pouvez faire est:

essayez de garder un autre bouton tel que More et en déclenchant ce bouton, vous pouvez obtenir un autre ensemble de résultats.

est ici l'échantillon comment déclencher l'auto extender du button

<asp:Button ID="yourtriggerbutton" runat="server" Text="Get Next Set of 
Results" OnClientClick="javascript:displayautocomplete()"/> 

Voici votre fonction trigger

<script type="text/javascript"> 
    function displayautocomplete() { 
     var autoComplete = $find("AutoCompleteExtender"); 
     autoComplete.get_element().focus(); 
     autoComplete._textBoxHasFocus = true; 
     autoComplete.get_element().value =" "; 
     Sys.Net.WebServiceProxy.invoke(autoComplete.get_servicePath(), 
      autoComplete.get_serviceMethod(), 
      false, 
      { prefixText: " ", count: autoComplete._completionSetCount }, 
      Function.createDelegate(autoComplete, autoComplete._onMethodComplete), 
      Function.createDelegate(autoComplete, autoComplete._onMethodFailed), 
      ”, 
      5000); 

     $common.updateFormToRefreshATDeviceBuffer(); 
    } 
</script> 

D'abord, vous devez trouver l'extension. Ensuite, réglez le focus sur l'extension. Sans mise au point sur l'extension, rien ne fonctionnera. Après le réglage de la mise au point, vous devez utiliser la méthode Sys.Net.WebServiceProxy.invoke qui appelle l'achèvement automatique. La dernière chose à faire est de utiliser la méthode $common.updateFormToRefreshATDeviceBuffer qui est enregistrée par l'AutoCompleteExtender afin de faire mises à jour pour former des éléments et pour rafraîchir leur tampon de document à ce qui est en direct dans le navigateur.

Vous pouvez en savoir plus sur cette solution de here,

+0

Merci, laissez-moi essayer et je reviendrai sous peu – user1342164

+0

@ user1342164 si elle vous aide s'il vous plaît upvote pour les futurs utilisateurs :) – Webruster