【问题标题】:Vanishing scroll bar when using Autocomplete extender使用自动完成扩展器时滚动条消失
【发布时间】:2010-09-23 00:21:07
【问题描述】:

我使用自动完成扩展器功能从我的数据库中获取建议列表。这个控件没有滚动条,所以我在一个面板(MS .net 2.0)中添加了一个滚动条,我将它附加到我的自动完成扩展器上。现在问题出在 srcoll 条上。 像这样

<asp:Panel ID="autocompleteDropDownPanel" runat="server"  ScrollBars="Auto"  Height="100px" HorizontalAlign="Left" />

并像这样将其添加到自动竞争扩展器中

:CompletionListElementID="autocompleteDropDownPanel"

当我调用我的页面时,我会看到建议列表并出现滚动条。当我点击滚动条或尝试拖动时,一切都消失了。

我做错了吗?有没有其他方法可以向我的自动完成扩展器控件添加滚动条

任何提示都会非常有帮助。

【问题讨论】:

  • 另一个问题已经关闭,所以我重新打开了这个。
  • 冒犯性的?标记的人没有帮助..

标签: asp.net .net-2.0 autocomplete ajaxcontroltoolkit


【解决方案1】:

这并不能直接回答您的问题 - 但我会问您是否确定自动完成扩展器是在这种情况下使用的最佳控件。

从可用性的角度来看,自动完成的好处是我可以键入 3-4 个字符,查看一些可用的输入,并使用键盘通过几个向下光标按键轻松选择它们。

如果您在自动完成列表中显示的项目比在屏幕上轻松查看的项目多,那么我不确定解决方法是添加滚动条。

在我们的场景中,我们有一个包含 2800 个名称的列表,这些名称在自动完成中可用。我们将显示的数字限制为 20,但将 MinimumPrefixLength 设置为 1。这意味着当用户输入一个字符时,他们会看到一个自动完成列表,实际上只是让他们知道他们正在输入的文本框具有此功能。列表中的结果列表只有在用户输入 3-4 个字符后才真正有用。

【讨论】:

    【解决方案2】:

    我有一个类似的问题,好像还没有解决。

    当附加到 AutoPostBack="true" 的文本框时,单击 AutoCompleteExtender 滚动条会导致回发。

    重现步骤:

    1. 使用 AutoPostBack="true" 将 TextBox 添加到您的 ASPX 页面。
    2. 添加一个 AutoCompleteExtender 并将上面的 TextBox 指定为目标控件。
    3. 创建新的 Web 服务方法并在 AutoCompleteExtender 上指定适当的 ServicePath 和 ServiceMethod。
    4. 根据需要在 AutoCompleteExtender 上指定所有适当的属性,以便输入一些文本会显示一个下拉菜单。
    5. 通过 Web 服务方法,确保您将返回大量项目,以便 AutoCompleteExtender 的下拉列表显示滚动条。
    6. 单击或跳入文本框并键入一些文本,以便显示下拉菜单(带有滚动条)。
    7. 为了更好地衡量,首先尝试简单地按向下箭头键,直到下拉菜单开始自行滚动。这很好用,没问题。
    8. 现在,不要向下箭头,而是单击滚动条并开始滚动。
    9. 哇!突然之间,TextBox 控件似乎失去了焦点,这自然会导致 AutoPostBack 行为启动。这会导致下拉菜单消失,并且您永远无法以您想要的方式滚动。

    似乎我们需要的是一种在下拉菜单显示时或可能只是在有人尝试滚动时临时禁用 AutoPostBack 行为的方法。也许在滚动条上单击可以设置某种标志来禁用 AutoPostback,然后释放鼠标会重新启用它。我不知道这有多可行,但如果有人有想法肯定会很好。

    http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=15161

    【讨论】:

    • 我刚刚遇到这个问题并找到了您的解决方案(以及上面的@wheelibin),这解决了我的问题。似乎确实需要一种更好的方法来解决这个问题。感谢您的详细回复。
    【解决方案3】:

    现在在 Visual Studio 2008 sp1 ajaxtoolkit 中解决了这个问题,您可以提供滚动到列表但编辑 CompletionListCssClass 集的 css

    overflow:auto;
    height:60px;
    

    【讨论】:

      【解决方案4】:

      我刚刚在 ASP.NET 3.5 中使用 AutoCompleteExtender 时遇到了同样的症状.....这是因为我在文本框上有 AutoPostBack=True,关闭它可以使滚动条正常工作。

      (我知道这与原始问题的情况不同,但我在尝试解决我的问题时从谷歌找到了这个,因此发布我的解决方案似乎是合适的。)

      【讨论】:

        【解决方案5】:

        在我的情况下,单击滚动条问题是通过在文本框上设置 AutoPostBack=false 来解决的。但是后来 AutoCompleteExtender 的功能消失了。使用OnClientItemSelected 属性,我可以调用触发回发的javascript 函数,并且所有IE 浏览器用户都再次感到高兴:-)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-05-09
          相关资源
          最近更新 更多