0

名前とコードを検索するためにWebサービスを呼び出すajaxオートコンプリートを使用しています(名前とコードはデータテーブルのフィールドです)

それはうまくいきます

これは私のWebサービスの方法です

   [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>
4

2 に答える 2

1

テーブル/フィールドに合わせて、私がそれを行う方法は次のとおりです。

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 * from SupplierMaster where name like '%" + prefixText.Replace("'", "''") + "%' OR code like '%" + prefixText.Replace("'", "''") + "%' ";

編集

あなた自身の答えから、コードと名前のフィールドを組み合わせていることがわかります。上記の短いコードでそれを行うことをお勧めしますが、次のように UNION クエリを使用します。

string SQL = "Select name from SupplierMaster where name like '%" + prefixText.Replace("'", "''") + "%' UNION Select code from SupplierMaster where code like '%" + prefixText.Replace("'", "''") + "%' ";
于 2012-07-05T08:25:09.120 に答える