JQuery自动完成在选择时没有发生回发

时间:2017-01-24 04:17:23

标签: c# jquery asp.net autocomplete

我在我的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();
}

0 个答案:

没有答案