使用AJAX1.0實現自動完成功能

使用AJAX1.0實現自動完成功能
下午 04:56 2011/2/14

一、準備web service
1、添加web service 文件
右擊“網站”-->添加新項目-->選擇Web 服務。web service 的 code 文件放在App_Code中,命名為GetPNService.cs。
2、加入namespace。 using System.Web.Script.Services;
3、加入標記。[ScriptService]
4、編寫方法。給方法添加標記——[WebMethod]。方法修飾為public。
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class GetPNService : System.Web.Services.WebService
{
    public GetPNService()
    {
        //如果使用設計的元件,請取消註解下行程式碼
        //InitializeComponent();
    }
    [WebMethod]
    public string[] GetPNList(string prefixText, int count, string contextKey)
    {
        DataTable dt = null;
        if (count == 0)
        {
            count = 20;
        }
        List<string> pnList = new List<string>(count);
        dt = ERPMateria.GetPNList(contextKey.ToUpper(), prefixText.ToUpper(), count);
        if (dt != null)
        {
            foreach (DataRow row in dt.Rows)
            {
                pnList.Add(row["pn"].ToString());
            }
        }
        return pnList.ToArray();
    }
}

二、添加AutoCompleteExtender,屬性設置如下。
        <ajaxToolkit:AutoCompleteExtender
        ID="AutoCompleteExtender4"
        runat="server"
        TargetControlID="txtInfoMaterialNo"
        ServiceMethod="GetPNList"
     ServicePath="GetPNService.asmx"
        UseContextKey="true"
        MinimumPrefixLength="2"
        EnableCaching="false"
        CompletionSetCount="20"
        CompletionInterval="1000"
        BehaviorID="autoCompleteBehavior4" />
  
三、編寫UseContextKey
因為上面UseContextKey="true"。
protected void Page_Load()
{
this.AutoCompleteExtender4.ContextKey = this.ddlSearchPlant.SelectedItem.Text;
}

四、注意
1、編寫webservices時,加入 System.Web.Script.Services 和 [ScriptService] ,否則前端調用不了webservices的方法。
2、基礎不扎實,原理不清楚,浪費腦細胞和時間。

原文地址:https://www.cnblogs.com/htht66/p/1954516.html