2010-03-24 58 views
0

上工作的人都可以摆脱对这个问题的一些光,请:试图让JQuery的自动完成Asp.Net

我有以下几点:

$(document).ready(function() { 
    $("#txtFirstContact").autocomplete({url:'http://localhost:7970/Home/FindSurname' }); 
}); 

在我的Asp.Net页面。 HTTP请求是一个MVC控制器的功能和代码是在这里:

Function FindSurname(ByVal surname As String, ByVal count As Integer) 
    Dim sqlConnection As New SqlClient.SqlConnection 
    sqlConnection.ConnectionString = My.Settings.sqlConnection 
    Dim sqlCommand As New SqlClient.SqlCommand 

    sqlCommand.CommandText = "SELECT ConSName FROM tblContact WHERE ConSName LIKE '" & surname & "%'" 

    sqlCommand.Connection = sqlConnection 

    Dim ds As New DataSet 
    Dim da As New SqlClient.SqlDataAdapter(sqlCommand) 
    da.Fill(ds, "Contact") 
    sqlConnection.Close() 

    Dim contactsArray As New List(Of String) 
    For Each dr As DataRow In ds.Tables("Contact").Rows 
     contactsArray.Add(dr.Item("ConSName")) 
    Next 
    Return Json(contactsArray, JsonRequestBehavior.AllowGet) 

End Function 

据我所知,控制器返回JSON数据,但我不知道,如果函数参数是否正确,或者确实如果返回的格式可以被AutoComplete插件解释。

如果有人能够协助此事,我会非常感激。

回答

0

函数需要接受一个名为q的参数,其中包含搜索文本。您可以使用extraParams选项传递计数,但默认情况下不会传递。

我在我的MVC控制器操作中返回的内容实际上是一个新的行分隔列表,它使用StringBuilder.AppendLine为搜索结果中的每条记录构建。

HTH

这是关于使用MVC内http://geekswithblogs.net/renso/archive/2009/09/08/jquery-autocomplete-in-asp.net-mvc-framework.aspx

+0

感谢Dan,您使用的是什么版本的JQuery,或者什么是自动完成插件,因为您所说的总是有道理,但它只是对我没有用,并且想知道我是否为您提供了不同的插件和/或版本。 – JasonMHirst 2010-03-25 08:43:46

+0

我正在使用jQuery 1.3.2,但jquery.ui.autocomplete.js文件上没有版本号,但文件头包含以下行 版本:$ Id:jquery.autocomplete.js 5785 2008-07-12 10:37:33Z joern.zaefferer $ 不知道是否有帮助 – 2010-03-25 09:10:13

+0

谢谢丹,非常感谢你的帮助。目前尚未解决,但会抢咖啡继续研究。再次感谢。 – JasonMHirst 2010-03-25 09:40:19

0

一个很好的例子,几乎得到了这个工作,肯定不是现在得到任何错误,但同样没有得到任何结果。

我现在已经使用内置了AutoComplete的JQuery的新版本,现在可以在文本框中获得我以前没有收到的动画轮 - 所以希望这是一个好兆头。

我的MVC功能是:

Function FindSurname(ByVal q As String, ByVal limit As Integer) As String 
    Dim sqlConnection As New SqlClient.SqlConnection 
    sqlConnection.ConnectionString = My.Settings.sqlConnection 
    Dim sqlCommand As New SqlClient.SqlCommand 

    sqlCommand.CommandText = "SELECT ConSName FROM tblContact WHERE ConSName LIKE '" & q & "%'" 

    sqlCommand.Connection = sqlConnection 

    Dim ds As New DataSet 
    Dim da As New SqlClient.SqlDataAdapter(sqlCommand) 
    da.Fill(ds, "Contact") 
    sqlConnection.Close() 
    Dim a As New StringBuilder 
    For Each dr As DataRow In ds.Tables("Contact").Rows 
     a.Append(dr.Item("ConSName")) 
     a.AppendLine() 
    Next 
    Return a.ToString 
End Function 

和aspx页面上的脚本是:

$(document).ready(function() { 
    $("#txtFirstContact").autocomplete({ source: 'http://localhost:7970/Home/FindSurname/', 
              minLength: 2 
             }); 
}); 

再次,“的minLength”参数似乎是工作的罚款也为动画轮没有按't'踢'直到我进入第二个角色。

任何额外的指针将不胜感激。