优化LINQ查询以与jQuery自动完成一起使用

时间:2010-05-20 02:40:21

标签: vb.net httphandler jquery-autocomplete

我正在构建一个HTTPHandler,它将提供纯文本以与jQuery Autocomplete一起使用。我现在有它工作,除了当我插入第一个文本时它不会把我带到字母表的右边部分。

示例:如果我输入Ne

我的下拉菜单

  

Nlabama
  阿肯色

注意来自Ne的“N”和来自“Alabama”的“labama”

当我输入第三个字符New时,jQuery会返回结果的“N”部分。

我目前的代码如下所示

Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
    ''# the page ContentType is plain text
    HttpContext.Current.Response.ContentType = "text/plain"

    ''# store the querystring as a variable'
    Dim qs As Nullable(Of Integer) = Integer.TryParse(HttpContext.Current.Request.QueryString("ID"), Nothing)

    ''# use the RegionsDataContext'
    Using RegionDC As New DAL.RegionsDataContext

        ''# create a (q)uery variable'
        Dim q As Object

        ''# if the querystring PID is not blank'
        ''# then we want to return results based on  the PID'
        If Not qs Is Nothing Then
            ''# that fit within the Parent ID'
            q = (From r In RegionDC.bt_Regions _
                    Where r.PID = qs _
                   Select r.Region).ToArray

            ''# now we loop through the array'
            ''# and write out the ressults'
            For Each item In q
                HttpContext.Current.Response.Write(item & vbCrLf)
            Next

        End If


    End Using
End Sub

所以我现在的情况是,我偶然发现了自动填充方法的“Part”部分,我只能返回部件中包含的信息。

我的问题是,如果不对每个字符更改执行新的SQLQuery,我将如何将此概念实现到我的HTTPHandler中? IE:我在 QueryString(“ID”)上执行SQL查询,然后在相同ID的每个后续加载中,我们只过滤掉“Part”。

http://www.example.com/ReturnRegions.axd?ID=[someID]&Part=[string]

2 个答案:

答案 0 :(得分:1)

只需从查询字符串中抓取part并在Where子句中使用它来仅过滤以它开头且具有相应ID的区域。

没有必要使用ToArray

答案 1 :(得分:0)

我更改了我的jQuery库以使用jQuery-UI,然后使用Singleton对象构建了我的iHttpHandler,以避免在每次页面加载时访问数据库。 answer here似乎对我有用。