2010-05-20 15 views
0

Je travaille sur la construction d'un HTTPHandler qui servira du texte brut à utiliser avec la saisie semi-automatique jQuery. Je l'ai maintenant travailler sauf quand j'insère le premier bit de texte, il ne me prend pas à la bonne partie de l'alphabet.Optimisation de la requête LINQ pour une utilisation avec la saisie semi-automatique jQuery

Exemple: Si j'entre Ne

tomber ma baisse des rendements

Nlabama
Arkansas

Notez le "N" de Ne et le "Labama" de "Alabama"

Comme je tape le troisième caractère New, puis le jQuery renvoie la section "N" des résultats.

Mon code actuel ressemble à ce

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 

Alors où je suis maintenant le fait que je suis tombé sur le « Part » partie de la méthode par laquelle je Autocomplete ne doit renvoyer les informations contenues dans les la partie.

Ma question est, comment pourrais-je implémenter ce concept dans mon HTTPHandler sans faire une nouvelle requête SQLQuery sur chaque changement de caractère? IE: Je fais la requête SQL sur le QueryString ("ID"), puis sur chaque chargement suivant du même ID, nous venons de filtrer la "partie".

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

+0

Aussi, dans l'article que j'ai posté, le gars parle de l'utilisation de JSON, et honnêtement, je ne connais pas la première chose à propos de JSON ou comment cela correspondrait à cette question. –

Répondre

0

J'ai changé ma bibliothèque jQuery pour utiliser le jQuery-UI puis construit mon IHttpHandler en utilisant un objet Singleton afin d'éviter de frapper la base de données sur chaque chargement de page. Le answer here semble bien fonctionner pour moi.

1

Il suffit de saisir le part du querystring et de l'utiliser dans la clause Where pour filtrer uniquement les régions qui commencent avec elle et avoir l'ID approprié.

ToArray n'est pas nécessaire

+0

Merci, j'ai essayé, mais malheureusement, je continuais à frapper la base de données encore et encore. J'ai compris ce que je cherchais après avoir creusé beaucoup. Votre suggestion m'a indiqué dans la bonne direction. http://stackoverflow.com/questions/2931877/cant-get-jquery-autocomplete-to-work-with-external-json/2933668#2933668 –