Установите положение прокрутки списка - PullRequest
1 голос
/ 20 января 2011

У меня есть список с множественным выбором.Этот список содержит имена многих объектов.Около 1000+Так что, как вы можете видеть, было бы очень неудобно пролистывать.То, что я хочу сделать, это отобразить AZ на стороне по вертикали.Когда пользователь щелкает букву, запускается javascript, чтобы установить позицию прокрутки (НЕ выбирать элемент) первого выбранного встречающегося символа.Это элемент управления, который создается в c #, а JavaScript обрабатывается с помощью диспетчера клиентских сценариев.По сути, я до сих пор добавил новый htmlanchor из массива char AZ.Это перечисляет алфавит по вертикали.Это будет очень похоже на музыкальную библиотеку iTouch / iPhone, коснитесь / щелкните букву, и прокрутка будет установлена ​​на первое вхождение.Я знаю, как пройтись по списку.Пока у меня есть функция onclick, которая действует следующим образом:

private HtmlGenericControl alphaSortContainer;
this.alphaSortContainer = new HtmlGenericControl("div");
char[] alphabet = { 'Z'.......'A' };
for (int i = 0; i < 26; i++)
{
    var letter = new HtmlAnchor();
    link.InnerText = alphabet[i].ToString();
    link.Attributes.Add("onclick", "javascript:jumpToIndex('" + link.InnerText + "');");
    alphaSortContainer.Controls.Add(letter);
}

Приведенный выше код добавляет (или должен) буквы, расположенные друг над другом.Их onclick запустит функцию javascript и отправит письмо.

Мой javascript на данный момент:

function jumpToIndex(var index) {
    var list = document.getElementByID('" + this.list.ClientID + "');
    for(var i=0; i < list.length; i++) {
        if(list.options[i].value.charAt(0) == index) {
          HOW TO SET THE SCROLL POSITION TO MAKE THAT OBJECT THE TOP OF THE LIST BOX
          break; //pretty sure this is how i would break out of both loops.
        }
    }
}

Мне просто нужно прокрутить до элемента, который соответствует оператору if.Кроме того, я уверен, что именно так я вырвусь из обеих петель.Пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 20 января 2011

Единственный способ сделать это - выбрать один из параметров в списке выбора, который вы можете сделать следующим образом:

<select id="myselect">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3" selected="selected">3</option>
  <option value="4">4</option>
</select>

Конечно, если вы не хотите делать этот выбор на стороне сервера при создании списка или если вы создаете список на стороне клиента, вы всегда можете сделать это с помощью javascript следующим образом:

document.getElementById('myselect').options[<insert number>].selected = true;

и помните, что <insert number> обнуляется

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

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

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

Рассматривали ли вы не отображение всего списка, а наличие массивов javascript для каждой буквы.Когда буква выбрана, список заполняется только элементами этой буквы?

var alphalist=new Array();
alphalist['a']=new Array('aardvark','acorns','apples');
alphalist['b']=new Array('baby','barley');
//etc
 function fill_list{selectedLetter){
  listItems=alphalist[selectedLetter];
  mylist=document.getElementById('mylist');
  mylist.length=0;.length=0;
  for(var i=0;i<listItems.length;i++){
    optionName = new Option(listItems[i],listItems[i])
    var length = mylist.length;
    mylist.options[length] = optionName;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...