我使用以下代码进行自动填充功能:
来源:
$(function () {
$("[id$=txtSearch]").autocomplete({
source: function (request, response) {
$.ajax({
url: '<%=ResolveUrl("~/SrchProduct.aspx/GetProducts") %>',
data: "{ 'prefix': '" + request.term + "'}",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
response($.map(data.d, function (item) {
return {
label: item.split('-')[0],
val: item.split('-')[1]
}
}))
},
error: function (response) {
alert(response.responseText);
},
failure: function (response) {
alert(response.responseText);
}
});
},
minLength: 1
});
代码背后:
[WebMethod]
public static string[] GetProducts(string prefix)
{
List<string> products = new List<string>();
ConnDB c = new ConnDB();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select Product from Product where Product like '%' + @SearchText + '%'";
cmd.Parameters.AddWithValue("@SearchText", prefix);
cmd.Connection = c.sqlconn;
c.sqlconn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
while (sdr.Read())
{
products.Add(string.Format("{0}", sdr["Product"]));
}
c.sqlconn.Close();
return products.ToArray();
}
这样可以使文本框的工作原理如下:
问题出现在文本中带有连字符( - )的项目中,例如:
E133 Brilliant Blue FCF Lake 10-14
我得到了:E133 Brilliant Blue FCF Lake 10
和E133 Brilliant Blue FCF Lake 14-18
我得到了:E133 Brilliant Blue FCF Lake 14
该函数检索文本( - )。我怎么解决这个问题?
答案 0 :(得分:1)
更改
return {
label: item.split('-')[0],
val: item.split('-')[1]
}
到
return {
label: item
}
我不知道为什么你要分割你的查询结果,让你的下拉列表显示连字符之前的部分,但是后面的部分的值(可能和ID)。