2008-11-19 4 views
1

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

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

и добавить его в AutoComplete расширителя как этот

:CompletionListElementID="autocompleteDropDownPanel" 

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

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

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

+0

Другой вопрос был закрыт, поэтому я снова открыл этот. –

+0

наступление? тот, кто отметил это, не был полезным. – warren

ответ

1

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

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

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

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

1

У меня подобная проблема выглядит так, будто она не была разрешена.

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

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

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

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

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

+0

Я только что наткнулся на эту проблему и нашел ваше решение (а также @wheelibin выше), и это решило мою проблему. Кажется, что для этого нужен лучший подход. Спасибо за подробный ответ. –

1

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

overflow:auto; 
height:60px; 
1

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

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

0

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

Смежные вопросы