2011-11-14 94 views
1

在Ajax中,我在我的asp.net应用程序中使用autocompleteExender,我为此编写服务,当我运行该服务时它工作正常,当我将autocompleteextender放入asp.net页面并为ajax autocompleteextender分配适当性时不工作。这是我的代码服务:Ajax中的自动完成功能无法正常工作?

[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 autocompletixtender代码。

<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; 
    } 

如果你觉得有用,请把它标记为你的答案别人让我知道...

+0

@Anadnd我没有在asp.net中gettng任何东西,但是当我运行serivce它正在工作 –

+0

启用此方法[System.Web.Script.Services.ScriptService]例如.. [System.Web.Script .Services.ScriptService] 公共类WebService:System.Web.Services.WebService { – AnandMohanAwasthi

+0

谢谢你的回复,但我不明白我必须把这个webserivce放在哪里。 –

0
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; 
     } 
} 
} 

如果你觉得有用,请注明它你的答案别人让我知道.. 。

+0

谢谢AnandMohanAwasthi先生 –

相关问题