Изменение SelectedIndex списка множественного выбора на последний выбранный элемент - PullRequest
0 голосов
/ 18 января 2011

Обращаясь к C #, .net, System.Web.UI.WebControls.Lisbox, который имеет опцию множественного выбора true и должен выполнять обратную передачу при каждом изменении выбранного индекса.

Проблема в том, что [SelectedIndex / SelectedItem / SelectedValue] всегда находится на значении 1-го выбранного элемента .Щелчок по второму элементу, третьему элементу, не изменяет SelectedIndex, в результате чего список перезагружается и прокручивается до самой высокой позиции выбранного элемента.

Ответы [ 5 ]

0 голосов
/ 10 марта 2011

Это просто проблема прокрутки.

Чтобы явно контролировать значение прокрутки ListBox (или любого другого элемента), вам нужно использовать JavaScript для установки свойства scrollTop :

document.all.getElementById("elementID").scrollTop = VALUE.

Так что измените обработчик JavaScript, который выполняет постбэк для вашего списка, который выглядит как "javascript: __ doPostBack (...". Замените это вызовом пользовательской функции, которая захватываеттекущее значение scrollTop сохраняет его в скрытую переменную, а затем вызывает __doPostBack, как и предполагалось изначально.

После кругового обхода это скрытое значение должно сохраняться обратно клиенту, поэтому в событии загрузки страницы JavaScriptПросто прочитайте это скрытое значение и повторно примените его к scrollTop вашего списка. Затем ваш список будет прокручен в том же месте, в котором он находился до того, как произошла запись.

0 голосов
/ 16 февраля 2011

Нет никакого способа сделать это, если говорить об этом контроле.

0 голосов
/ 18 января 2011

SelectedIndex всегда будет указывать на самый низкий выбранный индекс.Определение свойства ListBox.SelectedIndex:

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

Ручная установка свойства selectedindex приведет к отмене выбора всех других вариантов выбора, и я почти уверен, что нет способа (в коде .net) прокрутить вниз до определенного элемента.

У меня нет четкой картины того, что вы пытаетесь сделать, но, возможно, вы можете захватить все выбранные индексы с помощью функции ListBox GetSelectedIndices и сравнить с ранее захваченными выбранными индексами, чтобы определить наиболеенедавно выбранный элемент.

0 голосов
/ 18 января 2011

Брэндон. Убедитесь, что вы не заполняете ListBox каждый раз, когда страница загружается

0 голосов
/ 18 января 2011

Брэндон - можете ли вы поделиться кодом, куда вы загружаете список. Ниже приведены несколько возможных причин, по которым ListBox не может удерживать свой выбор:

  1. Перезагрузка списка в посте назад (после обработки данных поста)
  2. Динамически загружать список в конце жизненного цикла страницы, чтобы не было возможности обработать данные обратной передачи
  3. Динамически загружаемое поле списка (возможно, в шаблонном родительском элементе), так что его идентификатор клиента изменяется (или, в частности, идентификатор клиента отличается, когда происходит пост-обработка данных).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...