将asp.net webform发送到JQuery Autocomplete的最佳实践

我想要做的是从MS SQL Customer表Email列中检索所有电子邮件,并使用JQuery自动完成function填充它们。 目前的系统使用的是VB.NET 2.0。

我所做的是获取所有电子邮件并将它们放在DataTable中并循环并将它们放在由“,”分隔的字符串中。 将该字符串放入隐藏的框中。 JQuery从该隐藏框中检索值并使用“array = emails.split(”,“);”构建数组。 这是代码。

它在开发服务器上工作得很好,因为我们只有2000多条记录,但是当我把它放在有80,000多条记录的实时服务器上时它会永远加载。

前端

 $(function() { var emails = $("#EmailList").val(); var emailList = emails.split(","); $(".email-autocomplete").autocomplete({ source: emailList }); });    

后端

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load FetchEmailList() End Sub Private Sub FetchEmailList() Dim dt As Data.DataTable = GetCustomers() Dim i As Integer Dim _emails As String For i = 0 To dt.Rows.Count()-1 If IsDBNull(dt.Rows(i).Item("Email")) = False Then _emails &= dt.Rows(i).Item("Email") & "," End If Next If _emails.length > 0 Then EmailList.Value = _emails.substring(0,_emails.length-1) End If End Sub 

我提出了两个解决方案 –

  1. 当我从数据库服务器检索电子邮件时,我将使用函数TableToStr并将所有由“,”分隔的电子邮件放在一个字段中,VB.NET获取该值并将其放入隐藏框中。 在这里,我们可以通过后端的数据表删除循环。 但是,JQuery仍然需要“拆分”该字符串来构建数组。

  2. 从DB获取电子邮件,构建JSON并将其返回给JQuery。(我在使用C#的ASP.NET MVC3中完成了这一点,使用“返回JSON”非常简单,但是需要在VB.NET 2.0中进行一些研究) 。

当我们的数据源非常大时,处理自动完成的最佳做法是什么。

首先,我会将您的后端代码移动到通用的HttpHandler(.ashx)文件,然后通过AJAX从jQuery自动完成中调用该文件。 此外,缓存AJAX响应将提高性能。