AjaxToolKit自动完成扩展程序无法正常工作

时间:2013-01-08 09:18:12

标签: c# asp.net ajax autocomplete autocompleteextender

所以我花了4天时间研究并尝试在StackOverflow和其他网站上找到的所有内容。我只是无法使我的Ajax AutoCompleteExtender工作。我正在使用VS 2012和ASP.NET以及C#build for .NET 4.5 这是我的代码:

〜/仪表板/ Default.aspx的

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

   <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolKit" %>

   <ajaxToolKit:ToolkitScriptManager ID="ScriptManager1" runat="server">
       <Services>
           <asp:ServiceReference Path="~/Dashboard/AutoComplete2.asmx" />
       </Services>
   </ajaxToolKit:ToolkitScriptManager>


   <asp:TextBox ID="CarMake_TextBox" runat="server"></asp:TextBox>

   <ajaxToolKit:AutoCompleteExtender 
       ID="CarMake_AutoCompleteExtender" runat="server"
       Enabled="true"
       ServicePath="AutoComplete2.asmx"
       ServiceMethod="GetCarMakeList"
       TargetControlID="CarMake_TextBox"
       MinimumPrefixLength="1" FirstRowSelected="True"
       >
   </ajaxToolKit:AutoCompleteExtender>

</asp:Content>

〜/ Dashboard / AutoComplete2.asmx.cs(C#)

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace CDC.Dashboard
{
    /// <summary>
    /// Summary description for AutoComplete2
    /// </summary>
    [WebService(Namespace = "http://websiteleaders.com/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.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 AutoComplete2 : System.Web.Services.WebService
    {
        [System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public string[] GetCarMakeList(string prefixText, int count)
        {
            string sql = "Select DISTINCT Make from Car_Makes_Models Where Make LIKE @prefixText";
            SqlDataAdapter da = new SqlDataAdapter(sql, "Data Source=localhost\\SQLEXPRESS;Initial Catalog=CDC;Integrated Security=True");
            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["Make"].ToString(), i);
                i++;
            }
            return items;
        }
    }
}

我无法为我的生活让它发挥作用。当我尝试通过Web浏览器运行Web服务并输入值时,它会正确检索所需的信息并将其作为字符串数组返回。但似乎AutoCompleteExtender似乎没有被解雇。

值得注意的是,我第一次尝试它时,它起作用了。然后在任何后续尝试之后它没有。我很傻。如果我用IE运行它,我会得到关于使用AJAX ScriptManager(我已经在使用)和4.0脚本的已知错误消息。我正确安装和引用了AJAX工具包,是的,它确实支持我的目标框架.NET v4.5。

3 个答案:

答案 0 :(得分:0)

您是否尝试使用最新版本替换bin文件夹中的ajaxcontroltoolkit.dll?我发现有时VS会用参考副本覆盖dll。

答案 1 :(得分:0)

尝试使用以下代码段,使用ScriptManager代替ToolkitScriptManager

<asp:ScriptManager ID="ScriptManager1" runat="server">
            <Scripts>
                <asp:ScriptReference Name="AjaxControlToolkit.Common.Common.js" Assembly="AjaxControlToolkit" />
                <asp:ScriptReference Name="AjaxControlToolkit.ExtenderBase.BaseScripts.js" Assembly="AjaxControlToolkit" />
            </Scripts>
</asp:ScriptManager>

参考asp.net forum

同时检查AjaxControlToolkit.dll的版本,它应为3.5或更多,而不是1.0

检查AjaxControlToolkit.CommonToolkitScripts error上的答案,解决了在不同.NET框架场景中具有类似问题的其他用户的问题。

答案 2 :(得分:0)

使用AjaxControlToolkit 版本4.1.60919 它将正常工作