2011-04-22 50 views
0

第一個問題是彈出的列表遠遠低於實際的文本框。見圖。 pic提高速度AJAX AutoCompletion - ASP.NET C#

第二個問題是需要一整秒鐘或兩秒鐘才能使用自動完成功能來獲得任何結果。我懷疑它的數據庫/檢索相關,因爲使用本地字符串數組的名稱,給了我相同的結果。

的.aspx

  <asp:ScriptManager ID="ScriptManager1" runat="server"> 

      </asp:ScriptManager> 

      <asp:TextBox ID="txtFrom" runat="server"> 
      </asp:TextBox> 
      <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtender1" runat="server" TargetControlID="txtFrom" MinimumPrefixLength="1" ServiceMethod="GetSuggestions" EnableCaching="true"> 
      </ajaxToolkit:AutoCompleteExtender> 

我的網站的方法是在我的CS類

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public static string[] GetSuggestions(string prefixText, int count) 
{ 
    IList<String> donors = new List<String>(); 

    NHibernateSessionManager sessionManager = new NHibernateSessionManager(); 
    NHibernate.ISession session = sessionManager.GetSession(); 
    NHibernateDataProvider2 provider = new BT4SGWebApplication.NHibernateDataProvider2(session); 

    ExtraUserInfo user = provider.CRIT_GetDistinctExtraUserInfoByUserName(System.Web.HttpContext.Current.User.Identity.Name)[0]; 

    return user.GroupTable.PayorDonors.Where(x => x.Name.FullName.StartsWith(prefixText)).OrderBy(x => x.Name.FullName) 
    .Select<PayorDonor, string>(x => x.Name.FullName).ToArray(); 
} 

PS - 打是不是我的姓。

+1

...你確定這不是在autocomplentxtender中的2秒延遲,以防止顛覆數據源? Firebug/Fiddler展示什麼w.r.t.請求被解僱?如果您直接在服務中發出請求,需要多長時間才能做出響應?你看過CompletionInterval屬性嗎? – spender 2011-04-22 22:31:01

+0

CompletionInterval是嘗試和加快速度的最佳場所,但是你是如何實現NHibernateSessionManager.GetSession()的?它會返回一個單例還是每次都開始一個新的會話?啓動NHibernate會話很繁重,會減慢方法。 – Dimitri 2011-04-22 23:54:01

回答

1

嘗試在AutoCompleteExtender上設置較低的CompletionInterval。您遇到的延遲很大一部分可能是由於此(默認1秒)延遲造成的。