如果结果太多,Asp.net Autocomplete Extender会关闭

时间:2017-09-18 19:32:38

标签: asp.net vb.net autocompleteextender

我在asp.net网页上使用自动填充扩展程序,以便在用户开始输入姓氏时获取数据。只有当看起来有大量的结果被返回时,它才会让用户从下拉菜单中选择一个项目。它按状态搜索姓氏,因此如果用户键入2个字母的姓氏(如“Li”),则可能会返回许多结果。有没有办法在没有自动关闭的情况下允许更多结果?

<asp:AutoCompleteExtender ID="AutoCompleteExtender" runat="server" 
    DelimiterCharacters="" Enabled="True" ServicePath="AutoComplete.asmx" 
    ServiceMethod="GetCompletionList" TargetControlID="NameTextBox" 
    UseContextKey="true" ContextKey="StateDropDown" 
    onclientitemselected="getSelected"
    ShowOnlyCurrentWordInCompletionListItem="True" CompletionInterval="100" 
    MinimumPrefixLength="2" CompletionListElementID="autocompleteDropDownPanel"
    CompletionListCssClass="style101" OnClientShown="checkFocusOnExtender">

</asp:AutoCompleteExtender>

1 个答案:

答案 0 :(得分:1)

我们经历过这样的情况,我可以为您提供2种解决方案

解决方案1:尝试以滚动方式为扩展程序添加Css,您可以通过应用如下内容来实现此目的:

.mycustom {
 Overflow: auto; 
  height: 100px;
 }

解决方案2 :您可以设置您可以设置此控件的CompletionSetCount属性,它将在下拉列表中显示较少的计数项。默认值为10。但是这个解决方案有一个缺点,用户可能无法在其中找到他想要的结果,或者他想探索更多其他选项。为此你可以做的是:

尝试保留另一个按钮,例如More并触发该按钮,您可以获得另一组结果。

以下是如何从auto extender

触发button的示例
<asp:Button ID="yourtriggerbutton" runat="server" Text="Get Next Set of 
Results" OnClientClick="javascript:displayautocomplete()"/>   

这是您的trigger功能

<script type="text/javascript">
    function displayautocomplete() {
        var autoComplete = $find("AutoCompleteExtender");
        autoComplete.get_element().focus();
        autoComplete._textBoxHasFocus = true;
        autoComplete.get_element().value =" ";
        Sys.Net.WebServiceProxy.invoke(autoComplete.get_servicePath(),
           autoComplete.get_serviceMethod(),
           false,
           { prefixText: " ", count: autoComplete._completionSetCount },
           Function.createDelegate(autoComplete, autoComplete._onMethodComplete),
           Function.createDelegate(autoComplete, autoComplete._onMethodFailed),
           ”,
           5000);

        $common.updateFormToRefreshATDeviceBuffer();
    }
</script>

首先你需要找到扩展器。然后将焦点放在扩展器上。 如果不把重点放在扩展器上就没有任何作用。 焦点设置后,您需要使用Sys.Net.WebServiceProxy.invoke 将调用自动完成的方法。最后要做的是 使用$common.updateFormToRefreshATDeviceBuffer方法 由AutoCompleteExtender注册以便制作 更新表单元素并刷新其文档缓冲区 在浏览器中显示的内容。

您可以从here

了解有关此解决方案的更多信息