提高AJAX自动完成速度-ASP.NET C#
第一个问题是弹出的内容列表远远低于实际的文本框。见图。 第二个问题是使用自动完成需要整整一两秒钟的时间才能得到任何结果。我怀疑它与数据库/检索相关,因为使用名称的本地字符串数组会得到相同的结果 .aspx提高AJAX自动完成速度-ASP.NET C#,c#,asp.net,ajax,C#,Asp.net,Ajax,第一个问题是弹出的内容列表远远低于实际的文本框。见图。 第二个问题是使用自动完成需要整整一两秒钟的时间才能得到任何结果。我怀疑它与数据库/检索相关,因为使用名称的本地字符串数组会得到相同的结果 .aspx 我的web方法在我的cs类中 [System.Web.Services.WebMethod] [System.Web.Script.Services.ScriptMethod] public static string[] GetSuggestions(string prefixText
我的web方法在我的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();
}
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
公共静态字符串[]GetSuggestions(字符串前缀文本,整数计数)
{
IList=新列表();
NHibernateSessionManager会话管理器=新的NHibernateSessionManager();
NHibernate.ISession session=sessionManager.GetSession();
nhibernatedataprovider 2 provider=新的BT4SGWebApplication.nhibernatedataprovider 2(会话);
ExtraUserInfo user=provider.CRIT_GetDistinctExtraUserInfoByUserName(System.Web.HttpContext.Current.user.Identity.Name)[0];
返回user.GroupTable.PayorDonors.Where(x=>x.Name.FullName.StartsWith(prefixText)).OrderBy(x=>x.Name.FullName)
.Select(x=>x.Name.FullName).ToArray();
}
PS-hit不是我的姓。尝试在AutoCompleteXtender上设置一个较低的
CompletionInterval
。您遇到的延迟很大一部分可能是由于此延迟(默认值为1秒)。…您确定这不是AutoCompleteXtender中的2秒延迟,以防止数据源受到冲击吗?Firebug/Fiddler对被激发的请求显示了什么w.r.t?如果您直接向服务发出请求,需要多长时间才能响应?您研究过CompletionInterval属性吗?CompletionInterval是尝试加快速度的最佳地方,但是您是如何实现NHibernateSessionManager.GetSession()的呢?它是返回一个单例还是每次都开始一个新会话?启动NHibernate会话是一项繁重的操作,它会减慢该方法的速度。
[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();
}