0

aspx ページにテキスト ボックス、スクリプト マネージャー、およびオートコンプリート エクステンダーがあります。テキストボックスにオートコンプリートを入れようとしているだけで、現在何も得られていません。私は何が欠けていますか?コードをデバッグしようとすると、ブレーク ポイントが GetComplete メソッドの最初の中かっこを超えることはありません。私はVS2010を使用しています

マークアップ:

<%@ 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>

コードビハインド:

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;

        }
    }
}

SQL Server からの sproc

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

1 に答える 1

1

SqlCommandを接続に関連付けたり、ストアドプロシージャの名前をコマンドに伝えたりしていないようです。示されているようにコードを変更してみてください。

        using (SqlCommand cmd = new SqlCommand("spFindAllDrugs"))
        {
            cmd.Connection = conn;
            cmd.CommandType = CommandType.StoredProcedure;
于 2013-04-09T21:17:50.967 に答える