2013-04-09 158 views
0

我在aspx頁面上有一個文本框,一個腳本管理器和一個自動完成擴展器。我試圖簡單地將自動完成到文本框中,目前什麼都沒有。我錯過了什麼?當我嘗試調試代碼時,斷點永遠不會超出GetComplete方法中的第一個大括號。我在VS2010Ajax AutcompletExtender不返回任何結果

標記:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" Inherits="AjaxAutocomplete._Default" %> 

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %> 

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> 
</asp:Content> 
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <asp:AutoCompleteExtender ID="TextBox1_AutoCompleteExtender" runat="server" 
     DelimiterCharacters="" Enabled="True" ServiceMethod="GetComplete" MinimumPrefixLength="3" TargetControlID="TextBox1"> 
    </asp:AutoCompleteExtender> 

</asp:Content> 

後面的代碼:從SQL Server

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 

namespace AjaxAutocomplete 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
     [System.Web.Script.Services.ScriptMethod] 
     [System.Web.Services.WebMethod] 
     public static List<string> GetComplete(string Prefixtetxt) 
     { 
      List<string> returnList = new List<string>(); 
      string cs = ConfigurationManager.ConnectionStrings["dbcs"].ConnectionString; 
      using (SqlConnection conn = new SqlConnection(cs)) 
      { 
       conn.Open(); 
       using (SqlCommand cmd = new SqlCommand()) 
       { 
        cmd.CommandType = CommandType.StoredProcedure; 
        SqlParameter p = new SqlParameter("@drug_name", Prefixtetxt); 
        //cmd.Parameters.AddWithValue("@drug_name", p); 
        cmd.Parameters.Add("@drug_name", SqlDbType.VarChar); 
        using (SqlDataReader reader = cmd.ExecuteReader()) 
        { 
         returnList.Add(Convert.ToString(reader["drug_name"])); 

        } 
       } 


      } 
      return returnList; 

     } 
    } 
} 

存儲過程

create proc spFindAllDrugs 
@drug_name varchar(100) 
as 
begin 
select distinct drug_name 
    from rx 
    where drug_name like '%' + @drug_name + '%' 
end 

回答

1

看起來你是不是SqlCommand與關聯連接或告訴命令您的存儲過程的名稱。嘗試修改您的代碼,如圖所示。

 using (SqlCommand cmd = new SqlCommand("spFindAllDrugs")) 
     { 
      cmd.Connection = conn; 
      cmd.CommandType = CommandType.StoredProcedure;