1

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

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

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

:CompletionListElementID="autocompleteDropDownPanel"

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

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

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

4

5 回答 5

1

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

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

重现步骤:

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

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

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

于 2009-02-10T03:00:16.810 回答
1

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

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

于 2009-05-05T13:35:05.923 回答
1

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

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

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

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

于 2008-11-24T13:38:26.983 回答
1

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

overflow:auto;
height:60px;
于 2009-02-19T14:30:17.803 回答
0

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

于 2015-09-11T15:39:13.460 回答