2011-09-01 43 views
1

我正在修改其他程序員使用ASP.NET Web窗體和C#開發的現有應用程序。使用自動完成從C#中的ASP.NET Web窗體中的數據庫中獲取數據?

我必須添加到一個簡單的文本框自動完成功能。當用戶開始向文本框輸入內容時,文本框應顯示基於存儲在數據庫中的數據的建議。建議必須基於前綴(已輸入單詞的開始部分)。

我發現很多基於autocomplete AJAX extender的示例,但它基於從Web服務獲取數據。爲了完成這項任務,步驟和所需的方法和操作是什麼?

回答

2

你發佈的鏈接很好解釋了需要完成的一切。按照this video

如果您需要通過一些其他參數檢查this示例。

步驟。

1.新增文本框和Ajax擴展到頁面並指定目標ID爲textboxid .Specify Web服務名稱到延長
2.Implement web服務在上面的鏈接,並在瀏覽器中測試它。
3.在webservice中編寫你想要檢索數據的方式。你將返回一個字符串[]。

而不是創建Web服務,你甚至可以使用WebMethod屬性爲常規方法檢查以下

http://www.ajaxtutorials.com/ajax-tutorials/using-autocomplete-in-the-ajax-toolkit/
http://allwrong.wordpress.com/2007/03/13/ms-ajax-autocomplete-extender-using-a-page-method/

+0

感謝您的回答。有沒有辦法nto使用web服務?例如調用一個方法,因爲它發生在MVC與JSon? – CiccioMiami

+0

@CiccioMiami檢查我編輯的答案我添加了WebMethod的一部分。 –

+0

非常感謝!我找到了我正在尋找的東西! – CiccioMiami

1

你可以簡單地定義在頁面代碼隱藏的方法,用[裝飾它的WebMethod]屬性,然後將其設置爲下拉擴展程序的ServiceMethod屬性。
該方法必須實現邏輯來檢索/過濾結果,其簽名必須與示例匹配(例如:public string [] MyMethod(string prefixText,int count))。

0

先決條件是有「AjaxControlToolKit」。

首先,我們需要將文本框置於updatepanel中,以便發生部分回發,從而消除整個頁面重新加載。 使用ajax autocompleteExtender,使用它我們可以調用一個服務方法,該服務方法正在進行數據庫調用,該方法將獲取數據並填充文本框。

 <asp:UpdatePanel ID="pnlAcct" runat="server"> 
    <ContentTemplate> 
    <asp:TextBox ID="txtAcctNum"></asp:TextBox> 
    <asp:AutoCompleteExtender ID="AutoCompleteExtenderAccount" runat="server" MinimumPrefixLength="1" ServiceMethod="GetSourceAccount" ServicePath="~/AutoComplete/AutoComplete.asmx" 
            TargetControlID="txtAcctNum" Enabled="True" CompletionSetCount="20" CompletionInterval="1000" 
            EnableCaching="true"> 
           </asp:AutoCompleteExtender> 
          </ContentTemplate> 
          <Triggers> 
           <asp:AsyncPostBackTrigger ControlID="txtAcctNum" /> 
          </Triggers> 
         </asp:UpdatePanel> 

服務調用可以通過添加一個WebService(.asmx文件),並在.asmx.cs寫下面的代碼來完成以往file.What字符串中的可用數據將顯示框的下面。

[System.Web.Services.WebMethod] 
    [System.Web.Script.Services.ScriptMethod] 
    public string[] GetSourceAccount(string prefixText, int count) 
    { 
    List<string> lstSimilarSource = new List<string>(); 
    //Service call and populating the string 
    lstSimilarSource = Autocomplete.GetSimilarSource(prefixText, "ACCOUNT"); 
    return lstSimilarSource.ToArray(); 
    } 
相關問題