【发布时间】:2017-02-12 10:46:34
【问题描述】:
我有一个autocomplete textbox,它可以准确过滤我想要搜索的内容。但现在我想要的是,
如果用户没有在
textbox中输入任何内容,只需单击textbox。它应该显示所有结果。这可能吗?
下面是我的代码。
$(document).ready(function () {
SearchText();
});
function SearchText() {
$("#txt712").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Frm_Agreement_Master.aspx/GetAutoCompleteData",
data: "{'username':'" + extractLast(request.term) + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
alert("Error");
}
});
},
focus: function () {
return false;
},
select: function (event, ui) {
var terms = split(this.value);
terms.pop();
terms.push(ui.item.value);
terms.push("");
this.value = terms.join(", ");
return false;
}
});
$("#txt712").bind("keydown", function (event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).data("autocomplete").menu.active) {
event.preventDefault();
}
})
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
}
还可以找到我获得参考的链接。
更新
服务器端代码
[WebMethod]
public static List<string> GetAutoCompleteData(string username)
{
List<string> result = new List<string>();
using (OracleConnection ObjPriCon = new OracleConnection(System.Configuration.ConfigurationManager.ConnectionStrings["OracleConn"].ToString()))
{
using (OracleCommand cmd = new OracleCommand("select distinct survey_area_7_12 FROM xxcus.xxacl_pn_farming_mst WHERE survey_area_7_12 LIKE '%' || :searchtext || '%'", ObjPriCon))
{
ObjPriCon.Open();
cmd.Parameters.AddWithValue(":searchtext", username.ToLower());
OracleDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
result.Add(dr["survey_area_7_12"].ToString());
}
}
return result;
}
}
}
【问题讨论】:
-
这可以在服务器端完成。我检查了参考链接和 'C# execution sql query' 。通过验证搜索字符串是否为空,您已修改查询以获取所有结果(选择 *,而不是选择 distinct)并将所有结果发送到前端并填充
-
@Mehavel:好的,你能帮我写一些代码吗?我无法想象到底要做什么。
-
@Div:是的,这是有道理的,如果我在这里得到一些代码来想象,它将对我有更多帮助
标签: javascript c# jquery asp.net autocomplete