2012-08-29 64 views
0

我有一個動態數據網站,我嘗試使用AutoCompleteExtender添加文本框。我已經宣佈了控制,像這樣使用不帶web服務的自動完成擴展程序

<asp:TextBox ID="tbTerm" runat="server" Width="300px"/> 
    <asp:AutoCompleteExtender runat="server" 
     id="autoCompleteExtenderTerms" 
     TargetControlID="tbTerm" 
     ServiceMethod="GetCompletionList" 
     UseContextKey="True"> 
    </asp:AutoCompleteExtender> 

而且在該網頁上的代碼隱藏我已經聲明,像這樣

[System.Web.Services.WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
public static List<string> GetCompletionList(string prefixText, int count) 
{ 
    using (ProductDataEntities context = new ProductDataEntities()) 
    { 
     var terms = (from t in context.Terms 
        where t.Name.StartsWith(prefixText, StringComparison.CurrentCultureIgnoreCase) 
        select t.Name).ToList(); 

     return terms; 
    } 
} 

目前這種方法不獲取調用的Web方法,這不是一個forgien關鍵列,所以我不能使用標準過濾器。

我已經確保在ScriptManager上設置了EnablePageMethods =「true」,並且我不知道爲什麼這個方法沒有從頁面被觸發。控件沒有被包裝在更新面板中沒有其他的東西突出對我來說。

回答

0

設置ServicePath屬性值。

+0

爲自己的頁面背後的代碼設置一個服務路徑? – Siegeon

+0

是的,像'〜/ pathToPage/MyPage.aspx' –

+0

拍,沒有骰子。嘗試〜/ DynamicData/CustomPages/Terms/List.aspx,〜/ DynamicData/CustomPages/Terms/List.aspx.cs,/DynamicData/CustomPages/Terms/List.aspx,/DynamicData/CustomPages/Terms/List.aspx.cs – Siegeon