2013-10-31 104 views
1

我已經通過谷歌給了我所有的答案,但它沒有幫助我的問題抱歉。 (同樣,那些#1給我,如果我寫的標題)... 這裏面有個<asp:Table>AutoCompleteExtender沒有解僱

<asp:TableCell> 
    <asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="UP3"> 
     <ContentTemplate> 
      <asp:DropDownList runat="server" ID="SupplierDDL" Visible="false"> 
      </asp:DropDownList> 
      <asp:TextBox runat="server" AutoPostBack="true" ID="tbSupplier">    
      </asp:TextBox> 
      <cc1:AutoCompleteExtender runat="server" ID="AutoCompleteExtender1" TargetControlID="tbSupplier" BehaviorID="skldjfa" 
      MinimumPrefixLength="2" EnableCaching="true" ServiceMethod="SelectAllManufacturer"> 
      </cc1:AutoCompleteExtender> 
      <asp:HiddenField runat="server" ID="hfSupplier"/
     </ContentTemplate> 
    </asp:UpdatePanel> 
</asp:TableCell> 

以防萬一這<asp:Table>也是UpdatePanel的。

我Servicemethode應該罰款:

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public string[] SelectAllManufacturer(string prefixText, int count) 
{ 
    ArrayList filteredList = new ArrayList(); 
    OracleConnection oracon = GlobalFunctions.DatabaseConnection(); 
    OracleDataReader oradr; 
    oracon.Open(); 
    OracleCommand oracom = new OracleCommand(Classes.SQL.SQL4global.selectSupplierBySearchString(prefixText.ToLower()), oracon); 
    oradr = oracom.ExecuteReader(); 
    if (oradr.HasRows == true) 
    { 
     while (oradr.Read()) 
     { 
       filteredList.Add(AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(
        Convert.ToString(oradr["companyname"]) + " ** " + 
       Convert.ToString(oradr["street"]) + " * " + Convert.ToString(oradr["postalcode"]) + " * " + Convert.ToString(oradr["city"]) + " * " + Convert.ToString(oradr["land"]), 
       Convert.ToString(oradr["ID_Supplier"]))); 
     } 
    } 
    oradr.Close(); 
    oracon.Close(); 
    return (string[])filteredList.ToArray(typeof(string)); 

} 

它給了我沒有錯誤,它只是不激活ServiceMethode。

+0

您的瀏覽器控制檯有JavaScript錯誤嗎? –

+0

是的,還有一個問題,正如你可以在正確的答案中看到:)但是,謝謝。 – DatRid

回答

1

的問題只是在梅索德聲明:

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public string[] SelectAllManufacturer(string prefixText, int count) 

我把它改爲靜態梅索德

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public static string[] SelectAllManufacturer(string prefixText, int count) 

和有效。

0

其中一個問題可能是您沒有啓用ScriptManager(ToolkitScriptManager)控件的PageMethods功能。

所以,請確保您有類似下面的代碼在你掌握或aspx頁面:

<cc1:ToolkitScriptManager ID="scriptManager" runat="server" EnablePartialRendering="true" 
         EnablePageMethods="true"> 
+0

我曾啓用它,還有一個問題,正如你可以在正確的答案中看到:)但是,謝謝。 – DatRid

0

對我來說,答案是在Web服務代碼上漲。除了在方法上面添加[System.Web.Script.Services.ScriptMethod]之外,還有一行必須取消註釋。變化:

// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService] 

// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService] 
+0

是的,但正如你在我的問題中看到的,已經以其他方式實現了。我不確定答案中的投票是否來自你,但它不公平,因爲'[System.Web.Services.WebMethod]'和[System.Web.Script.Services.ScriptMethod]'就足夠了爲AJAX! – DatRid