2010-09-24 115 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