Автозаполнение в Ajax не работает?

#asp.net

#asp.net

Вопрос:

В Ajax я использую autocompleteExender в моем asp.net приложение, я пишу сервис для этого, когда я запускаю этот сервис, он работает нормально, когда я помещаю autocompleteextender в asp.net страница и назначение свойства для ajax autocompleteextender не работает. это мой кодовый сервис:

 [WebMethod]
public string[] GetCompletionList(string prefixText)
{
    SqlConnection con=new SqlConnection
     ("server=******;database=Mydb;user id=***;password=****;");
    string sql = "Select productname from F_Product
      Where productname like '"   prefixText   "%'";
    SqlDataAdapter da = new SqlDataAdapter(sql, con); 
     try
    {
        DataTable dt = new DataTable();
        da.Fill(dt);
        string[] items = new string[dt.Rows.Count];
        int i = 0;
        foreach (DataRow dr in dt.Rows)
        {
            items.SetValue(dr[0].ToString(), i);
            i  ;
        }
        return items; 
    }
    catch
    {
        return null;
    }
    finally
    {
        con.Close();

    }
  

и это мой код ajax autocompleteextender.

 <asp:AutoCompleteExtender ID="AutoCompleteExtender1" MinimumPrefixLength="2"
     TargetControlID ="TextBox1" ServiceMethod="GetCompletionList"
       ServicePath="~/Autocomplete.asmx"
         runat="server">
    </asp:AutoCompleteExtender> 
    <asp:TextBox ID="TextBox1" runat="server"
     Width="213px"></asp:TextBox>
  

Ответ №1:

Попробуйте это.

 [WebMethod]
    public string[] GetCompletionList(string prefixText)
    {

        string sql = "Select productname from F_Product Where productname like @prefixText ";
        SqlDataAdapter da = new SqlDataAdapter(sql, System.Configuration.ConfigurationManager.ConnectionStrings["dbConnectionString"].ConnectionString);
        da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value = prefixText   "%";
        DataTable dt = new DataTable();
        da.Fill(dt);
        string[] items = new string[dt.Rows.Count];
        int i = 0;
        foreach (DataRow dr in dt.Rows)
        {
            items.SetValue(dr["productname"].ToString(), i);
            i  ;
        }
        return items;
    }
  

Если вы сочтете это полезным, пожалуйста, отметьте это как свой ответ, иначе дайте мне знать…

Комментарии:

1. @Anadnd я ничего не получаю в asp.net , но когда я запускаю serivce, он работает

2. Включите этот метод [System.Web.Script. Услуги. Например, ScriptService] .. [System.Web.Script. Услуги. ScriptService] веб-сервис общедоступного класса: System.Web.Services. Веб-сервис {

3. спасибо за ответ, но я не понимаю, куда я должен поместить этот веб-сервер.

4. @Surya sasidhar: Если какой-либо ответ дает решение проблемы, то вы можете принять ответ. Это реальный способ оценить.

5. @Yank, ya, я получил ответ на свой вопрос.

Ответ №2:

     using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Web.Script.Services;



namespace YourProject
{
    /// <summary>
    /// Summary description for WebService
    /// </summary>
    // [ScriptService]
    //[System.Web.Script.Services.ScriptService()]
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]
    public class WebService : System.Web.Services.WebService
    {

        protected void Page_Load(object sender, EventArgs e)
        {

        }
        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod]
        public string[] GetCompletionList(string prefixText)
        {

            string sql = "Select productname from F_Product Where productname like @prefixText ";
            SqlDataAdapter da = new SqlDataAdapter(sql, System.Configuration.ConfigurationManager.ConnectionStrings["dbConnectionString"].ConnectionString);
            da.SelectCommand.Parameters.Add("@prefixText", SqlDbType.VarChar, 50).Value = prefixText   "%";
            DataTable dt = new DataTable();
            da.Fill(dt);
            string[] items = new string[dt.Rows.Count];
            int i = 0;
            foreach (DataRow dr in dt.Rows)
            {
                items.SetValue(dr["productname"].ToString(), i);
                i  ;
            }
            return items;
        }
 }
}
  

Если вы сочтете это полезным, пожалуйста, отметьте это в своем ответе, иначе дайте мне знать…

Комментарии:

1. Спасибо, мистер Анандмоханавасти