Javascript 设置列表框的滚动位置

Javascript 设置列表框的滚动位置,javascript,asp.net,listbox,Javascript,Asp.net,Listbox,我有一个多选列表框。此列表框包含许多实体的名称。大约1000+左右。所以,正如你所看到的,滚动浏览是非常烦人的。我要做的是在侧面垂直显示A-Z。当用户单击一个字母时,会触发javascript以设置滚动位置,而不是选择所选第一个出现字符的项目。这是一个用c语言创建的控件,javascript使用客户端脚本管理器呈现。基本上到目前为止,我所做的是从字符数组a-Z添加一个新的htmlanchor。这垂直列出了字母表。这将非常类似于iTouch/iPhone音乐库,触摸/单击字母,滚动设置为第一次出现

我有一个多选列表框。此列表框包含许多实体的名称。大约1000+左右。所以,正如你所看到的,滚动浏览是非常烦人的。我要做的是在侧面垂直显示A-Z。当用户单击一个字母时,会触发javascript以设置滚动位置,而不是选择所选第一个出现字符的项目。这是一个用c语言创建的控件,javascript使用客户端脚本管理器呈现。基本上到目前为止,我所做的是从字符数组a-Z添加一个新的htmlanchor。这垂直列出了字母表。这将非常类似于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语句匹配的项。而且,我很确定这就是我打破这两个循环的方式。请帮忙

执行此操作的唯一方法是在选择列表中选择一个选项,您可以通过以下方式执行此操作:

<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;
记住这是零基的

现在,在你说我不想选择它之前,只需滚动到它,记住如果你在列表框中看到一个选项,默认情况下它已经被选中了


除非你正在使用一个多选选择框,在这种情况下,这是一个完全不同的球赛,你是狗屎运气

执行此操作的唯一方法是在选择列表中选择一个选项,您可以通过以下方式执行此操作:

<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;
记住这是零基的

现在,在你说我不想选择它之前,只需滚动到它,记住如果你在列表框中看到一个选项,默认情况下它已经被选中了


除非你正在使用一个多选选择框,在这种情况下,这是一个完全不同的球赛,你是狗屎运气

您是否考虑过不显示整个列表,而是为每个字母设置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;
  }
}

您是否考虑过不显示整个列表,而是为每个字母使用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;
  }
}

该死…看来我真是倒霉,哈哈。我正在考虑搜索列表,选择第一个出现的,滚动到它,然后取消选择它。但是,在意识到我的列表大约是24k+之后,它会非常慢。我能做到这一点的唯一方法是以某种方式将第一次出现的SQL存储在列表的其他位置。最大的问题是客户认为这是有用的。一个25K+的列表框,高度为100px…是的。哇。。。是的,这听起来像是一个难以置信的坏主意,不管你怎么看,回到你的客户那里,直截了当地告诉他们他们需要重新考虑设计——听起来像是用户最糟糕的噩梦——看起来我真是倒霉,哈哈。我正在考虑搜索列表,选择第一个出现的,滚动到它,然后取消选择它。但是,在意识到我的列表大约是24k+之后,它会非常慢。我能做到这一点的唯一方法是以某种方式将第一次出现的SQL存储在列表的其他位置。最大的问题是客户认为这是有用的。一个25K+的列表框,高度为100px…是的。哇。。。是的,这听起来是一个难以置信的坏主意,不管你怎么看,回到你的客户那里,直截了当地告诉他们需要重新考虑设计——这听起来像是用户最糟糕的噩梦