问题描述
|
我目前是第一次涉足jquery自动完成功能。首先,我有一个.net处理程序,用于调用mssql数据库并提取姓氏。效果很好。
但是,当我尝试添加其他值时,它根本不起作用。处理程序中使用的代码如下。
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
Dim prefixText As String = context.Request.QueryString(\"term\")
Dim conn As sqlConnection = New sqlConnection
conn.ConnectionString = ConfigurationManager.AppSettings(\"CDBPath\")
Dim cmd As sqlCommand = New sqlCommand
cmd.CommandText = (\"Select Ebase.EbLastname,Ebase.EbFirstname,Ejob.EjTitle,Ebase.EbClock \" + _
\"From Ebase \" + _
\"INNER Join Ejob \" + _
\"ON Ebase.EbFlxID = Ejob.EjFlxIDEb \" + _
\"Where Ebase.EbLastname LIKE @SearchText + \'%\'\" + _
\"And Ebase.EbDateEnd Is Null \" + _
\"And Ejob.EjDateEnd Is Null\")
cmd.Parameters.AddWithValue(\"@SearchText\",prefixText)
cmd.Connection = conn
Dim sb As StringBuilder = New StringBuilder
conn.open()
Dim sdr As sqlDataReader = cmd.ExecuteReader
While sdr.Read
sb.Append(sdr(\"EbLastname\")).Append(\",\").Append(sdr(\"EbFirstname\")).Append(\" - \").Append(sdr(\"EjTitle\")).Append(\",\").Append(sdr(\"EbClock\")).Append(Environment.NewLine)
End While
conn.Close()
context.Response.ContentType = \"application/json\"
context.Response.Write(sb.ToString)
End Sub
发布时我没有包括IsReusable,但是在那里。为什么我不喜欢某些真正简单的东西,为什么它不喜欢多个值,但会显示一个单独的值?
**编辑**为了明确起见,我只是看着Firebug,它正在收到响应,但没有显示它。到目前为止,我的实现非常简单,一点也不花哨。
$(function() {
$(\'#lastName\').autocomplete
({
source: \"FormAutoComplete.ashx\",minChars: 3
});
})
解决方法
如果要返回多个值,则必须考虑项目的解析和格式。这是我过去所做的示例。它返回一个像这样的json对象:
{ City: \"Charleston\",State: \"SC\",Code: \"chs\" }
并将其格式化为Charleston,SC
,并使用Code
表示在文本框中显示的实际值。
$areas.autocomplete(data,{
formatItem: function (item) {
return item.City + \",\" + item.State;
},formatResult: function (item) {
return item.Code;
},multiple: true
});