Asp.net自动完成扩展程序下拉列表关闭(如果结果太多)

Asp.net自动完成扩展程序下拉列表关闭(如果结果太多),asp.net,vb.net,autocompleteextender,Asp.net,Vb.net,Autocompleteextender,当用户开始键入姓氏时,我正在asp.net网页上使用自动完成扩展程序获取数据。只有当返回大量结果时,它才不会让用户从下拉列表中选择项目。它按州搜索姓氏,因此如果用户键入两个字母的姓氏,如“Li”,则可能会返回许多结果。有没有一种方法可以在不自动关闭的情况下获得更多结果 <asp:AutoCompleteExtender ID="AutoCompleteExtender" runat="server" DelimiterCharacters="" Enabled="True" Se

当用户开始键入姓氏时,我正在asp.net网页上使用自动完成扩展程序获取数据。只有当返回大量结果时,它才不会让用户从下拉列表中选择项目。它按州搜索姓氏,因此如果用户键入两个字母的姓氏,如“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:尝试以扩展器滚动的方式添加扩展器的Css,您可以通过应用如下内容来实现这一点:

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

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

下面是如何从
按钮

<asp:Button ID="yourtriggerbutton" runat="server" Text="Get Next Set of 
Results" OnClientClick="javascript:displayautocomplete()"/>   
首先,您需要找到扩展器。然后将焦点设置在扩展器上。 如果不将焦点设置在扩展器上,任何事情都不会起作用。 在焦点设置之后,您需要使用Sys.Net.webservicecoproxy.invoke 方法,该方法将调用自动完成。最后要做的就是 使用
$common.updateFormToRefreshATDeviceBuffer
方法 由AutoCompleteXtender注册,以便 更新表单元素并刷新其文档缓冲区 在浏览器中实时显示的内容


有关此解决方案的更多信息,请参阅,

谢谢,让我试试,我会回来找你的shortly@user1342164如果有帮助,请向上投票给未来用户:)
<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>