2010-09-24 6 views
0

J'ai utilisé le nom de recherche basé sur les caractères dans la grille de données en utilisant les services http. donc je l'ai utilisé zone de texte et grille de données, est fcomptxt zone de texte id fComptxt.addEventListener(Event.CHANGE,applyFilter);comment puis-je faire une recherche rapide en flex?

public function applyFilter(e : Event):void { 

     CompanyViewBean.companyViewBean = new CompanyViewBean(); 
      CompanyViewBean.companyViewBean.subAction 
    = new XML("<actionContext><actionName>SearchCompany</actionName></actionContext>"); var nameSearch:String = fComptxt.text; CompanyViewBean.companyViewBean.companyName=<name>{nameSearch}</name>;  
xmlGeneration() 

     } 

En fonction xmlgeneration j'envoyer la demande de rompre l'utilisation des services http. Mais ma clarification est

  1. s'ils ont tapé fastly alors obtenir des erreurs (erreurs http)
  2. Est-il possible, ne d'une autre manière de mettre en œuvre rapidement la recherche
  3. i utilisé clavier vers le bas et événement aussi du clavier vers le haut puis pas utiliser le même problème se produire.

Répondre

2

Si vous pouvez charger toutes les données à la fois, vous pouvez utiliser la fonctionnalité de tri d'un ArrayCollection pour filtrer les données au fur et à mesure que l'utilisateur tape. Ca devrait être plutôt rapide. Mais, si vous voulez faire un ping sur la base de données après chaque frappe, vous aurez souvent des problèmes de temps de latence entre le serveur et le client par rapport à la vitesse de frappe de l'utilisateur.

Je vois deux options que vous pourriez enquêter sur:

  1. Vous pouvez désactiver l'entrée de texte après chaque pression de touche jusqu'à ce que vous obtenez des données à partir du serveur.
  2. Après chaque frappe, vous pouvez annuler la requête distante "en cours" avant de démarrer la nouvelle.
+0

merci beaucoup Jeffry. c'est très utile pour moi –

+0

comment sont-ils capables d'annuler la requête distante en cours? Parce que si j'envoie une requête puis un traitement de serveur, comment puis-je annuler cette demande? –

+0

Annule la demande en utilisant HTTPService.cancel http://help.adobe.com/fr_FR/FlashPlatform/reference/actionscript/3/mx/rpc/http/HTTPService.html#cancel() ou déconnecte sur RemoteObject/WebService/HTPService commandes http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/AbstractService.html#disconnect(). Cela n'annulera probablement rien sur le serveur, mais empêchera Flash Player d'écouter la réponse. – JeffryHouser

Questions connexes