使用自动完成扩展程序时消失滚动条

时间:2008-11-19 09:01:02

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

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

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

并将其添加到autocompete extender中,如下所示

:CompletionListElementID="autocompleteDropDownPanel"

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

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

任何提示都会非常有用。

5 个答案:

答案 0 :(得分:1)

这并没有直接回答你的问题 - 但我会问你是否确定自动完成扩展程序是在这种情况下使用的最佳控件。

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

如果您在自动填充列表中显示的项目多于在屏幕上轻松查看的项目,那么我不确定该修复是否添加滚动条。

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

答案 1 :(得分:1)

我有一个类似的问题,看起来还没有解决。

单击AutoCompleteExtender滚动条会在附加到AutoPostBack =“true”的TextBox时导致回发。

重现的步骤:

  1. 使用AutoPostBack =“true”将TextBox添加到ASPX页面。
  2. 添加AutoCompleteExtender并将上面的TextBox指定为目标控件。
  3. 创建新的Web服务方法,并在AutoCompleteExtender上指定相应的ServicePath和ServiceMethod。
  4. 根据需要在AutoCompleteExtender上指定所有相应的属性,以便键入一些文本显示下拉列表。
  5. 从Web服务方法,确保您将返回大量项目,以便AutoCompleteExtender的下拉列表显示滚动条。
  6. 单击或选项卡进入TextBox并键入一些文本,以便显示下拉列表(带滚动条)。
  7. 为了更好地衡量,首先只需按下向下箭头键,直到下拉开始自行滚动。这很好,没问题。
  8. 现在,不要向下箭头,而是单击滚动条并开始滚动。
  9. 卫生署!突然之间,看起来焦点从TextBox控件中丢失,这自然导致AutoPostBack行为启动。这导致下拉消失,您永远无法以您想要的方式滚动。 / LI>

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

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

答案 2 :(得分:1)

这是目前在visual studio 2008 sp1 ajaxtoolkit中解决的问题,您可以提示滚动列表但编辑CompletionListCssClass集的CSS

overflow:auto;
height:60px;

答案 3 :(得分:1)

我在ASP.NET 3.5中使用AutoCompleteExtender时遇到了相同的症状.....这是因为我在文本框上有AutoPostBack=True,关闭它使滚动条功能正常

(我知道这与原始问题的情况不同,但我在尝试修复问题时从谷歌发现了这一点,所以发布我的解决方案似乎很合适。)

答案 4 :(得分:0)

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