未从数据库中检索连字符( - )后的文本

时间:2017-03-10 07:36:01

标签: c# jquery asp.net sql-server

我使用以下代码进行自动填充功能:

来源:

  $(function () {
        $("[id$=txtSearch]").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: '<%=ResolveUrl("~/SrchProduct.aspx/GetProducts") %>',
                    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);
                    }
                });
            },

            minLength: 1
        });

代码背后:

[WebMethod]
public static string[] GetProducts(string prefix)
{
    List<string> products = new List<string>();
    ConnDB c = new ConnDB(); 

    SqlCommand cmd = new SqlCommand();

    cmd.CommandText = "select Product from Product where Product like '%' + @SearchText + '%'";
            cmd.Parameters.AddWithValue("@SearchText", prefix);
            cmd.Connection = c.sqlconn;
            c.sqlconn.Open();
        SqlDataReader sdr = cmd.ExecuteReader();

                while (sdr.Read())
                {
                    products.Add(string.Format("{0}", sdr["Product"]));
                }

                c.sqlconn.Close();


    return products.ToArray();
}

这样可以使文本框的工作原理如下:

autocomplete works fine

问题出现在文本中带有连字符( - )的项目中,例如:

E133 Brilliant Blue FCF Lake 10-14

我得到了:E133 Brilliant Blue FCF Lake 10

和E133 Brilliant Blue FCF Lake 14-18

我得到了:E133 Brilliant Blue FCF Lake 14

该函数检索文本( - )。我怎么解决这个问题?

1 个答案:

答案 0 :(得分:1)

更改

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

return {
       label: item
   }

我不知道为什么你要分割你的查询结果,让你的下拉列表显示连字符之前的部分,但是后面的部分的值(可能和ID)。