2013-01-08 71 views
0

因此,我花了4天時間研究並嘗試了所有可以在StackOverflow和其他網站上找到的東西。而且我無法讓我的Ajax AutoCompleteExtender正常工作。我使用VS 2012和.NET爲4.5 這裏ASP.NET和C#樓是我的代碼:AjaxToolKit自動完成擴展器不工作

〜/儀表板/ 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> 

〜/儀表板/ 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 Service並輸入值時,它會恰好檢索所需的信息並將它們返回爲字符串數組。但它看起來像AutoCompleteExtender只是不開火。

值得注意的是,我第一次嘗試它,它的工作。然後在任何後續嘗試後,它沒有。我很沮喪。如果我用IE來運行它,我會得到關於使用AJAX ScriptManager(我已經在使用)和4.0腳本的錯誤信息。我已經正確安裝和引用了AJAX工具包,並且它支持.NET v4.5,這是我的目標框架。

+0

你試過從Firebug的網絡控制檯檢查AJAX日誌或可能提琴手? (所以你可能知道這個問題是在後臺進程或客戶端js或其他..) –

+1

@Harsh我已經使用Fiddler和Firebug,並從控制檯我得到2錯誤: 錯誤:AjaxControlToolkit需要ASP.NET Ajax 4.0腳本。確保引用了正確版本的腳本。如果您使用的是ASP.NET ScriptManager,請切換到AjaxControlToolkit.dll中的ToolkitScriptManager。# AND 'TypeError:Sys.Extended is undefined' 正如您可以看到我使用AJAX ToolKitScriptManager。我有正確的引用和所有。 – TIPS

回答

0

您是否試過用最新版本替換bin文件夾中的ajaxcontroltoolkit.dll?我發現有時VS會偶爾用參考副本覆蓋dll。

+1

是的,我已經嘗試過。手動下載zip文件並替換它。我也嘗試從NuGet和控制檯重新安裝AjaxToolkit,甚至安裝以前的版本4.1.60623(當前:4.1.60919) 仍在我的評論中提到上述錯誤。 – TIPS

+0

啊......同樣的問題這邊!太令人沮喪了 –

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中遇到類似問題的問題。fr模擬scenerio。

+0

我試過了,然後跟着你的鏈接和你給其他用戶的信息。我感謝你的幫助,但它不工作。其他用戶在參考文章中遇到同樣的錯誤。你指示他是3.5腳本。那麼我使用4.5,我似乎無法解決它。我研究了試圖找到這些腳本的4.5替代品,但我仍然無法弄清楚。如果你能幫助我,那會很棒。 – TIPS

+0

當我收到錯誤頁面時,我注意到了一些東西。在底部顯示此消息: '版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.18010' 難道是IIS在4.0下運行嗎?雖然我檢查了IIS應用程序池,但它已經列出了v4.5,但是.NET Framework版本爲'v4.0',意思是版本'v4.0.30319' 試圖改變,結果讓我感到沮喪,因爲它似乎不可改變,並在一些職位上,我發現它說,它的確定,它應該是。 – TIPS

+0

只是一個想法..看着你已經花在'ACT自動完成'上的時間,爲什麼你不嘗試jQuery自動填充一次..我相信任何有用的東西都有利於你和你的上司而且jquery比'ACT'更豐富的庫:D –

0

使用AjaxControlToolkit 版本4.1.60919它會correctlly工作