我在我的asp.net网站上使用jquery AutoComplete。自动完成工作正常,但我想要选择任何项目或textchange它应该回发,但这不会发生。我需要对选择进行回发,因为根据所选项目填充了其他其他字段。以下是我的代码。
<asp:TextBox ID="consigner" runat="server" ClientIDMode="Static" AutoPostBack="true"></asp:TextBox>
<asp:HiddenField ID="consignerId" runat="server" ClientIDMode="Static" />
<script type="text/javascript">
$(function () {
$("[id$=consigner").autocomplete({
source: function (request, response) {
$.ajax({
url: '<%=ResolveUrl("~/book-online.aspx/GetConsigners") %>',
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);
}
});
},
select: function (e, i) {
$("[id$=consignerID]").val(i.item.val);
},
minLength: 1
});
});
</script>
[WebMethod()]
public static string[] GetConsigners(string prefix)
{
List<string> myConsigner = new List<string>();
using (MySqlConnection conn = new MySqlConnection()) {
conn.ConnectionString = ConfigurationManager.ConnectionStrings("conio").ConnectionString;
using (MySqlCommand cmd = new MySqlCommand()) {
cmd.CommandText = "SELECT clientID,clientName,City FROM clientsDetails WHERE (clientName LIKE @clientName) and status = 'active'";
cmd.Parameters.AddWithValue("@clientName", "%" + prefix + "%");
cmd.Connection = conn;
conn.Open();
using (MySqlDataReader sdr = cmd.ExecuteReader()) {
while (sdr.Read()) {
myConsigner.Add(string.Format("{0}-{1}", sdr("clientName"), sdr("clientID")));
}
}
conn.Close();
}
}
return myConsigner.ToArray();
}