我有以下下拉列表,它使用Ajax Toolkit提供组合框
<cc1:ComboBox ID="txtDrug" runat="server" style="font-size:8pt; width:267px;"
Font-Size="8pt" DropDownStyle="DropDownList"
AutoCompleteMode="SuggestAppend" AutoPostBack="True"
ontextchanged="txtDrug_TextChanged" />
现在我需要加载大约7,000条记录,这需要相当长的时间,并影响页面来回发布时的响应时间。
加载这些记录的代码如下:
dtDrugs = wsHelper.spGetAllDrugs();
txtDrug.DataValueField = "pkDrugsID";
txtDrug.DataTextField = "drugName";
txtDrug.DataSource = dtDrugs;
txtDrug.DataBind();
但是,如果我在键入一个字母时可以触发一个事件而不必加载7000个记录,那么在大多数情况下它会减少到少于50个。
我认为这可以在Javascript中完成。所以问题是如何才能触发事件,以便在表单开始时下拉列表中没有任何内容,但只要按下某个键,它就会搜索以该字母开头的那些记录。
我确定的事情的.Net方面 - 这是Javascript我不是。
提前致谢
答案 0 :(得分:1)
我不认为AutoComplete扩展程序适用,因为它仅适用于TextBox而不适用于ComboBox。我相信Paul需要能够检索所选项目的ID,这是TextBox无法提供的。
答案 1 :(得分:0)
我认为你要找的是AutoComplete extender附加到TextBox,你需要设置以下属性来为扩展器提供数据源:
ServiceMethod="GetCompletionList"
ServicePath="AutoComplete.asmx"
AutoComplete.asmx 是指向您服务的链接,而 GetCompletionList 是您要调用的服务方法,此方法的签名必须符合以下条件:
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public string[]
GetCompletionList(string prefixText, int count)
{ ... }