ajaxToolkit:AutoCompleteExtender的自定义参数(contextKey)
Posted on 2011-03-01 10:25 ykhi 阅读(2774) 评论(1) 编辑 收藏 举报它的基本用法请参阅我的另一篇文章ajaxToolkit:AutoCompleteExtender 用法详解,由于它的ServiceMethod 的参数形式是固定的, 所以没办法任意地添加自定义参数,这个方法共有两个重载形式:
public string[] ServiceMethod (string prefixText, int count)
public string[] ServiceMethod (string prefixText, int count,string contextKey)
其中第一个是基本用法,第二个多了个contextKey 参数,即可以让用户传递自己定义的参数的, 例如,我希望调用该方法时, 把页面上一个dropDownList 的值传过去, 示例如下:
<asp:TextBox ID="txtPersonInfo" runat="server" CssClass="TextBoxXW" onkeydown="return OnTxtPersonInfoKeyDown();"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender runat="server" ID="acName" TargetControlID="txtPersonInfo" ServicePath="cppw_Input_Ry.asmx" ServiceMethod="GetPersonInfoList" MinimumPrefixLength="1" CompletionInterval="1000"EnableCaching="true" CompletionSetCount="20" CompletionListCssClass="autocomplete_completionListElement"CompletionListItemCssClass="autocomplete_listItem"CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem" DelimiterCharacters=";, :" />
function OnTxtPersonInfoKeyDown()
{
var ddlBz=document.getElementById("<%=ddlBz.ClientID %>");
var acNameClientId="<%=acName.ClientID %>";
var acName=$find(acNameClientId);
if(acName!=null)
acName.set_contextKey(ddlBz.options[ddlBz.selectedIndex].value);
}
关键在于js 函数的最后一句,即在回传之前,设置它的值。
关于AutoCompleteExtender, 我还有另外一篇文章: ajaxToolkit:AutoCompleteExtender 的触发选择(选中)事件