如何在asp.net中获取自动完成文本框的值

时间:2015-09-15 17:44:16

标签: c# asp.net

以下是使用webservice填充自动填充文本框的代码。我正在获取两个数据库字段,一旦我从列表中选择一个项目,相关费率就显示在另一个文本框中。而不是获得ServiceId我得到费率字段。我如何获得ServiceId值请帮助我。提前感谢你。

.aspx代码

<asp:HiddenField ID="hfServiceId" runat="server" />
<asp:TextBox ID="txtTest" runat="server"></asp:TextBox>
<asp:TextBox ID="txtRate" runat="server"></asp:TextBox>
<asp:Button ID="btnAdd" runat="server"  Text="Add" OnClick="Insert"/>

我的网络服务代码

 [WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string[] GetServices(string prefix)
{
    List<string> customers = new List<string>();
    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString = ConfigurationManager
                .ConnectionStrings["conString"].ConnectionString;
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "select ServiceName, ServiceId,Rate from Service where " +
            "ServiceName like @SearchText + '%'";
            cmd.Parameters.AddWithValue("@SearchText", prefix);
            cmd.Connection = conn;
            conn.Open();
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    customers.Add(string.Format("{0}-{1}-{2}", sdr["ServiceName"], sdr["ServiceId"], sdr["Rate"]));
                }
            }
            conn.Close();
        }
        return customers.ToArray();
    }
}

java脚本代码

$(function () {
    $("[id$=txtTest]").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: '<%=ResolveUrl("~/AutocompleteSingle.asmx/GetServices") %>',
                    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],
                                val: item.split('-')[2]
                            }
                        }))
                    },
                    error: function (response) {
                        alert(response.responseText);
                    },
                    failure: function (response) {
                        alert(response.responseText);
                    }
                });
            },
            select: function (e, i) {
                $("[id$=hfServiceId]").val(i.item.val);
                $("[id$=txtRate]").val(i.item.val);
            },
            minLength: 1
        });
    });

代码背后:

protected void Insert(object sender, EventArgs e)
{
    string serviceId = Request.Form[hfServiceId.UniqueID];   // getting rate field value
}

1 个答案:

答案 0 :(得分:3)

这里

                        return {
                            label: item.split('-')[0],
                            val: item.split('-')[1],
                            val: item.split('-')[2]
                        }

您创建一个具有两个具有相同名称的属性的对象,使用第二个值重写第一个的值。尝试以不同的方式命名它们。