我有一個多選列表框。該列表框包含許多實體的名稱。大約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語句相匹配的項目。此外,我很確定這將是我如何擺脫兩個循環。請幫忙!
該死的......看起來我很糟糕哈哈。我正在考慮搜索列表,選擇第一個出現,滾動到它,然後取消選擇它。但是,在意識到我的列表大約是24k +之後,它會非常慢。我能做到這一點的唯一方法是以某種方式將其他地方的第一個事件存儲起來(列表來自SQL)。最大的問題是客戶認爲這是可行的。 25K +列表框,高度爲100px ....是的。 – Tom 2011-01-20 20:43:10