当在Ajax Toolkit组合框上按下某个键时,Javascript将触发事件

时间:2009-09-16 15:40:36

标签: ajax javascript-events

我有以下下拉列表,它使用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我不是。

提前致谢

2 个答案:

答案 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) 
{ ... }