Asp.net Ajax AutoCompleteXtender调用webservice从数据库的两个字段进行搜索,现在可以使用了

Asp.net Ajax AutoCompleteXtender调用webservice从数据库的两个字段进行搜索,现在可以使用了,asp.net,sql,ajax,web-services,autocomplete,Asp.net,Sql,Ajax,Web Services,Autocomplete,我正在使用ajax autocomplete,它调用web服务来搜索名称和代码(名称和代码是我的数据表的字段) 它很好用 这是我的webservice的WebMethod [WebMethod] public string[] GetSupplier(string prefixText) { con.Open(); //int count = 10; string sql = "Sele

我正在使用ajax autocomplete,它调用web服务来搜索名称和代码(名称和代码是我的数据表的字段)

它很好用

这是我的webservice的WebMethod

   [WebMethod]
        public string[] GetSupplier(string prefixText)
        {
            con.Open();
            //int count = 10;
            string sql = "Select * from SupplierMaster where name like @prefixText  ";
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 500).Value = prefixText + "%";
            DataTable dt = new DataTable();
            da.Fill(dt);
            string[] List = new string[100];
            int i = 0;

            foreach (DataRow dr in dt.Rows)
            {
                List.SetValue(dr["name"].ToString(), i);
                i++;
            }

         string sql1 = "Select * from SupplierMaster where codelike @prefixText  ";
            SqlDataAdapter da1 = new SqlDataAdapter(sql1, con);
            da1.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 500).Value = prefixText + "%";
            DataTable dt = new DataTable();
            da1.Fill(dt);
            string[] List = new string[100];
            int i = 0;
            foreach (DataRow dr in dt.Rows)
            {
                List.SetValue(dr["name"].ToString(), i);
                i++;
            }
            con.Close();
            return List;

        }
这是.aspx文件中的自动完成扩展程序

  <asp:AutoCompleteExtender runat="server" ID="AutoCompleteExtender3" TargetControlID="txtsear" ServicePath="~/Search.asmx" ServiceMethod="GetSupplier"

 MinimumPrefixLength="1" CompletionSetCount="10" 
CompletionListCssClass="autocomplete_completionListElement"
 CompletionListItemCssClass="autocomplete_listItem" 
                                                                    CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem"
 </asp:AutoCompleteExtender>

以下是我的做法,适合您的表格/字段:

using System.Collections.Generic;
// your class/namespace etc.

[WebMethod]
public List<string> GetSupplier(string prefixText)
{
    string SQL = "Select * from SupplierMaster where name like '%" + prefixText.Replace("'", "''") + "%' ";

    SqlConnection cnn = new SqlConnection(ConnectionStringGoesHere);
    SqlCommand cmd = new SqlCommand(SQL, cnn);
    cmd.CommandType = CommandType.Text;

    List<string> returnvalues = new List<string>();

    try
    {
        cnn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            returnvalues.Add(dr["name"].ToString());
        }
    }
    finally
    {
        cnn.Close();
    }

    return returnvalues;
}
编辑

从您自己的回答中,我看到您正在合并代码和名称字段。我更愿意使用上面较短的代码,但使用联合查询,如下所示:

string SQL = "Select name from SupplierMaster where name like '%" + prefixText.Replace("'", "''") + "%' UNION Select code from SupplierMaster where code like '%" + prefixText.Replace("'", "''") + "%' ";
我得到了答案

  [WebMethod]
        public string[] GetSupplier(string prefixText)
        {
            con.Open();
            //int count = 10;
            string sql = "Select * from SupplierMaster where name like @prefixText";
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 500).Value = prefixText + "%";
            DataTable dt = new DataTable();
            da.Fill(dt);
            string[] List = new string[100];
            int i = 0;
            foreach (DataRow dr in dt.Rows)
            {
                List.SetValue(dr["name"].ToString(), i);
                i++;
            }

            string sql1 = "Select * from SupplierMaster where code like @prefixText";
            SqlDataAdapter da1 = new SqlDataAdapter(sql1, con);
            da1.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 500).Value = prefixText + "%";
            DataTable dt1 = new DataTable();
            da1.Fill(dt1);
            //string[] List = new string[dt.Rows.Count];
            //int i = 0;
            foreach (DataRow dr in dt1.Rows)
            {
                List.SetValue(dr["code"].ToString(), i);
                i++;
            }
            con.Close();
            return List;

        }

它是否只使用名称字段,现在您想添加代码,还是完全不工作,甚至只使用名称字段,如上所述?我已经编辑了它的正确内容&正在工作。
  [WebMethod]
        public string[] GetSupplier(string prefixText)
        {
            con.Open();
            //int count = 10;
            string sql = "Select * from SupplierMaster where name like @prefixText";
            SqlDataAdapter da = new SqlDataAdapter(sql, con);
            da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 500).Value = prefixText + "%";
            DataTable dt = new DataTable();
            da.Fill(dt);
            string[] List = new string[100];
            int i = 0;
            foreach (DataRow dr in dt.Rows)
            {
                List.SetValue(dr["name"].ToString(), i);
                i++;
            }

            string sql1 = "Select * from SupplierMaster where code like @prefixText";
            SqlDataAdapter da1 = new SqlDataAdapter(sql1, con);
            da1.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 500).Value = prefixText + "%";
            DataTable dt1 = new DataTable();
            da1.Fill(dt1);
            //string[] List = new string[dt.Rows.Count];
            //int i = 0;
            foreach (DataRow dr in dt1.Rows)
            {
                List.SetValue(dr["code"].ToString(), i);
                i++;
            }
            con.Close();
            return List;

        }