Исчезающая полоса прокрутки при использовании автозаполнения расширителя - PullRequest
1 голос
/ 19 ноября 2008

Я использую функцию автозаполнения, чтобы получить список предложений из моей базы данных. Для этого элемента управления полоса прокрутки отсутствует, поэтому я добавил полосу прокрутки на панели (MS .net 2.0), которую я прикрепляю к своему расширителю автозаполнения. Теперь проблема заключается в панели srcoll. как это

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

и добавьте его в расширитель автоконкурента вот так

:CompletionListElementID="autocompleteDropDownPanel"

Когда я звоню своей странице, я получаю список предложений и появляется полоса прокрутки. Когда я нажимаю на полосу прокрутки или пытаюсь перетащить, все просто исчезает.

Я что-то не так делаю? Есть ли другой способ добавить полосу прокрутки к моему элементу управления автозаполнением

Любые подсказки были бы очень полезны.

Ответы [ 5 ]

1 голос
/ 05 мая 2009

Я только что столкнулся с такими же симптомами при использовании AutoCompleteExtender в ASP.NET 3.5 ..... это было потому, что у меня было AutoPostBack=True в текстовом поле, отключение этого сделало функцию полосы прокрутки правильно.

(Я знаю, что это не тот же сценарий, что и в оригинальном вопросе, но я нашел его в Google, пытаясь исправить мою проблему, поэтому было уместно опубликовать мое решение.)

1 голос
/ 10 февраля 2009

У меня похожая проблема, похоже, она не решена.

Нажатие полосы прокрутки AutoCompleteExtender вызывает обратную передачу при подключении к TextBox, где AutoPostBack = "true".

Шаги для воспроизведения:

  1. Добавьте TextBox на свою страницу ASPX с AutoPostBack = "true".
  2. Добавьте AutoCompleteExtender и укажите текстовое поле выше в качестве целевого элемента управления.
  3. Создайте новый метод веб-службы и укажите соответствующий ServicePath и ServiceMethod в AutoCompleteExtender.
  4. Укажите все соответствующие атрибуты в AutoCompleteExtender, если необходимо, чтобы при наборе текста отображался раскрывающийся список.
  5. Из метода веб-службы убедитесь, что вы будете возвращать большое количество элементов, чтобы в раскрывающемся списке AutoCompleteExtender отображалась полоса прокрутки.
  6. Нажмите или вкладку в TextBox и введите текст, чтобы отобразился раскрывающийся список (с полосой прокрутки).
  7. Для правильного измерения сначала попробуйте просто нажать клавишу со стрелкой вниз, пока выпадающий список не начнет прокручиваться самостоятельно. Это отлично работает, нет проблем.
  8. Теперь, вместо того чтобы стрелять вниз, нажмите полосу прокрутки и начните прокрутку.
  9. Doh! Внезапно создается впечатление, что фокус теряется из-за элемента управления TextBox, что естественным образом вызывает поведение AutoPostBack. Это приводит к исчезновению выпадающего меню, и вы никогда не сможете прокручивать его так, как вы хотели.

Похоже, нам нужен способ временно отключить поведение AutoPostBack всякий раз, когда отображается раскрывающийся список или, возможно, только когда человек пытается прокрутить. Возможно, нажатие на полосу прокрутки может установить какой-то флаг, который отключит автопостбэк, а затем отпустите кнопку мыши, чтобы снова включить его. Я не знаю, насколько это возможно, но было бы неплохо, если бы у кого-то была идея.

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

1 голос
/ 19 февраля 2009

хорошо, это решается прямо сейчас в Visual Studio 2008 sp1 ajaxtoolkit, и вы можете обеспечить прокрутку к списку, но редактирование CSS набора CompletionListCssClass

overflow:auto;
height:60px;
1 голос
/ 24 ноября 2008

Это не дает прямого ответа на ваш вопрос - но я бы спросил, если вы уверены, что расширитель автозаполнения является лучшим элементом управления в этом сценарии.

С точки зрения удобства использования, отличное свойство автозаполнения состоит в том, что я могу набирать 3-4 символа, просматривать несколько доступных входов и легко выбирать их с помощью клавиатуры, используя несколько нажатий клавиш курсора.

Если в списке автозаполнения отображается больше элементов, чем можно легко просмотреть на экране, я не уверен, что исправление заключается в добавлении полосы прокрутки.

В нашем сценарии у нас был список из 2800 имен, которые были доступны при автозаполнении. Мы ограничили показанное число до 20, но установили MinimumPrefixLength на 1. Это означало, что, когда пользователь вводил один символ, он видел список автозаполнения, который фактически просто давал им знать, что текстовое поле, в которое он вводит, имеет такую ​​возможность. Список результатов в списке становится действительно полезным только после того, как пользователь ввел 3-4 символа.

0 голосов
/ 11 сентября 2015

клик по проблеме полосы прокрутки в моем случае был исправлен установкой AutoPostBack=false в текстовом поле. Но затем функциональность AutoCompleteExtender исчезла. Используя свойство OnClientItemSelected, я мог вызвать функцию javascript, которая вызвала обратную передачу, и все пользователи браузера IE снова были счастливы: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...