我有一個ASP.NET 4.5 WebForm應用程序,我想在其中添加自動完成到文本框。 我正在調查jquery-ui,但我似乎無法使其工作。ASP.NET JQuery-UI自動完成不工作
我正在使用jquery 3.1.1和jquery-ui 1.12.1。這是我的aspx頁面的頭部分。
ASPX
<head runat="server">
<link href="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#SearchDynamicTxt").autocomplete({
source: function (request, response) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "UserReports.aspx/GetUsers",
data: "{'term':'" + $("#SearchDynamicTxt").val() + "'}",
dataType: "json",
success: function (data) {
response(data.d);
},
error: function (result) {
alert("Error");
}
});
}
});
});
</script>
</head>
這裏是文本控件:
<asp:TextBox ID="SearchDynamicTxt" runat="server" OnTextChanged="SearchDynamicTxt_TextChanged" AutoPostBack="true" ></asp:TextBox>
這裏是後面的代碼:
[WebMethod]
public static string[] GetUsers(string term)
{
List<string> usersList= new List<string>();
string CS= ConfigurationManager.ConnectionStrings["UsersCS"].ConnectionString;
using (SqlConnection con = new SqlConnection(CS))
{
con.Open();
SqlCommand cmd = new SqlCommand("SELECT Name FROM Customers WHERE Name Like '" + term + "%'", con);
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
usersList.Add(reader[0].ToString());
}
}
return usersList.ToArray();
}
我敢肯定有東西,我忘了或拼寫錯誤,但我不知道什麼或在哪裏。當我嘗試在控件中寫一些東西時,沒有任何反應。我希望它向我展示一個可能的匹配用戶列表,當我選擇其中一個時,可以調用方法OnTextChanged。
更新!
現在,下拉列表顯示出來了,我想選擇一個用戶和那個選擇來觸發OnChanged方法。目前這沒有發生。我需要按回車或點擊頁面上的某個地方生成回傳,然後檢測OnChanged文本。我猜我需要改變這一點:
success: function (data)
{
response(data.d);
},
也許增加一個事件參數或什麼?我目前正在尋找解決方案,但如果有人知道答案,直到我找到它,請分享它。
謝謝!
你需要在文本框中添加這些OnTextChanged =「SearchDynamicTxt_TextChanged」AutoPostBack =「true」? –