导航

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 的触发选择(选中)事件