AutoCompleteExtender 使用示例
绑定 KeyValuePair,网上很多例子,没有找到绑定键值对的,msdn上有例子,备忘一下。
using FirstElite.Verify.Entity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.Services; namespace FirstElite.Verify.WebServices { /// <summary> /// SchoolAutoComplete 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.Web.Script.Services.ScriptService] public class SchoolAutoComplete : System.Web.Services.WebService { [WebMethod] public string[] GetSchoolCompletionList(string prefixText, int count) { using (var db = new FirstEliteVerifyEntities()) { var districtList = db.District.ToList(); var schoolList = db.School.Where(item => item.name.Contains(prefixText)).Take(100).OrderBy(item => item.districtcode) .Select(item => new SchoolModel { Name = item.name, DistrictCode = item.districtcode, Code = item.schoolcode }).ToList(); var sb = new StringBuilder(); foreach (var school in schoolList) { var districtCode = school.DistrictCode; var district = districtList.FirstOrDefault(d => d.code == districtCode); sb.Clear(); sb.Append(district.name); while (district != null && district.parentcode != null) { district = districtList.First(item => item.code == district.parentcode); if (district != null) sb.Insert(0, district.name); } school.District = sb.ToString(); } var result = schoolList.Select(item => { var text = string.Format("{0}({1})", item.Name, item.District); var autoCompleteItem = AjaxControlToolkit.AutoCompleteExtender.CreateAutoCompleteItem(text, item.Code); return autoCompleteItem; }); return result.ToArray(); } } public class SchoolModel { public string Name { get; set; } public string DistrictCode { get; set; } public string District { get; set; } public string Code { get; set; } } } }
<asp:TextBox ID="txtSearchKey" runat="server" Width="200px" autocomplete="off"></asp:TextBox> <ajaxToolkit:AutoCompleteExtender runat="server" BehaviorID="AutoCompleteEx" ID="autoComplete1" TargetControlID="txtSearchKey" ServicePath="../WebServices/SchoolAutoComplete.asmx" ServiceMethod="GetSchoolCompletionList" MinimumPrefixLength="1" CompletionInterval="500" EnableCaching="true" CompletionSetCount="50" CompletionListCssClass="a" CompletionListItemCssClass="b" CompletionListHighlightedItemCssClass="c" OnClientItemSelected="AutoCompleteSelected" ShowOnlyCurrentWordInCompletionListItem="true" > </ajaxToolkit:AutoCompleteExtender>
<script type="text/javascript"> function AutoCompleteSelected(source, eventArgs) { alert(eventArgs.get_text() + "<->" + eventArgs.get_value()); } </script>
桂棹兮兰桨,击空明兮溯流光。