1. 程式人生 > >Asp.net學習記錄6--Textbox的自動完成、自動補充功能呢

Asp.net學習記錄6--Textbox的自動完成、自動補充功能呢

類似百度、Google中搜索框自動提示的功能

需要微軟的ajaxToolkit開源工具包

解壓編譯後,在該目錄的SampleWebSite\Bin中將AjaxControlToolkit的dll和pdb檔案拷出,並引用到你的專案中。

在工具欄中將其引用,呼叫AutoCompleteExtender控制元件使用

aspx中使用例子如下:

</pre><p></p><p><span style="font-size:14px;"><span style="font-family: Arial; line-height: 26px;"></span></span></p><pre name="code" class="html">

<asp:ScriptManager runat="server" ID="ScriptManager1" />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>

父級角色:<asp:TextBox ID="txt_parent_rolename" autocomplete="off" runat="server"></asp:TextBox><br /><br />
                <cc1:AutoCompleteExtender ID="actParent_RoleName" runat="server"
                    TargetControlID="txt_parent_rolename"
                    BehaviorID="AutoCompleteEx"
                    ServicePath ="~/WebServices/selectBaseInfo.asmx"
                    ServiceMethod = "GetRoleName"
                    MinimumPrefixLength="2"
                    CompletionInterval="1000"
                    EnableCaching="true"
                    CompletionSetCount="20"
                    CompletionListCssClass="autocomplete_completionListElement" 
                    CompletionListItemCssClass="autocomplete_listItem" 
                    CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem"
                    DelimiterCharacters=";, :"
                    ShowOnlyCurrentWordInCompletionListItem="true">
                </cc1:AutoCompleteExtender>
        </ContentTemplate>
    </asp:UpdatePanel>



然後新建一個WebService服務,會生成兩個檔案asmx和cs,如上例中的selectBaseInfo.asmx,其程式碼檔案為selectBaseInfo.cs

selectBaseInfo.asmx檔案內容為:

<%@ WebService Language="C#" CodeBehind="~/App_Code/selectBaseInfo.cs" Class="selectBaseInfo" %>

selectBaseInfo.cs檔案內容為:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允許使用 ASP.NET AJAX 從指令碼中呼叫此 Web 服務,請取消對下行的註釋。 
 [System.Web.Script.Services.ScriptService]
public class selectBaseInfo : System.Web.Services.WebService {


    public selectBaseInfo () {


        //如果使用設計的元件,請取消註釋以下行 
        //InitializeComponent(); 
    }


    /// <summary>
    /// 檢索角色名稱
    /// </summary>
    /// <param name="prefixText"></param>
    /// <param name="count"></param>
    /// <returns></returns>
    [WebMethod]
    public string[] GetRoleName(string prefixText, int count)
    {
        BLRoles blrole = new BLRoles();
        List<string> item = blrole.queryRoleNamesByKeyword(prefixText.ToUpper(), 2, count);
        string[] strReturn = null;
        if(item!=null&&item.Count>0)
        {
            strReturn = item.ToArray();
        }


        return strReturn;
    }
}