2010-09-24 42 views
0

我使用http服务在数据网格中使用基于字符的搜索名称。所以我用文本框和数据网格,fcomptxt是文本框ID fComptxt.addEventListener(Event.CHANGE,applyFilter);如何在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() 

     } 

在xmlgeneration功能我发送请求使用http服务断绝。但是我的说明是

  1. 如果他们输入快速度,然后得到错误(HTTP错误)
  2. 是否有任何可能做任何其他方式实现快速搜索
  3. 我用键盘按下事件并键盘了事件则没有使用相同的问题发生。

回答

2

如果您可以一次加载所有数据,那么您可以使用ArrayCollection的排序功能根据用户键入的数据过滤数据。它应该很快。

但是,如果您想在每次按键后都ping数据库,那么与服务器和客户端之间的延迟时间相比,用户输入的速度往往会有所不同。

我可以看到两个选项,你可以调查:

  1. 你可以每次键击后禁用文本输入,直到你得到的数据从服务器返回。
  2. 每次击键后,您可以在开始新的操作之前取消“正在处理”的远程 请求。
+0

谢谢Jeffry。这对我非常有用 – 2010-09-25 10:16:47

+0

他们怎样取消正在进行的远程请求?因为如果我发送请求然后严重处理,那么我如何取消该请求? – 2010-09-25 10:23:05

+0

使用HTTPService.cancel取消请求http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/http/HTTPService.html#cancel()或在RemoteObject/WebService/HTPService上断开连接命令http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/rpc/AbstractService.html#disconnect()。这可能不会取消服务器上的任何内容,但会阻止Flash Player侦听响应。 – JeffryHouser 2010-09-25 12:38:19