2014-01-22 52 views
0

我有這些非常大的下拉列表(1500)項目。我必須在單個頁面上使用很多這種大的下拉列表(每個列表1500個項目,每個對象4個列表,每個頁面150個對象)。所有這些列表對每個對象都是相同的。將選項列表附加到重點選擇

不幸的是,客戶端要求這種結構,所以我正在尋找一種很好的方法來創建4個下拉列表並根據他們所關注的選擇框來重用它們。正在在剃刀創建

名單:

var list = ViewData["List"] as IEnumerable<SelectListItem>; 
IEnumerable<SelectListItem> selectEnumerable = null; 

if(list != null) 
{ 
    selectEnumerable = list.Select(x => new SelectListItem 
    { 
     Text = x.Text, 
     Value = x.Value.ToString() 
    }).OrderBy(x => Convert.ToInt32(x.Value)); 
} 

@Html.DropDownList("List", selectEnumerable) 

我怎麼能這樣做?

+0

你的意思是當有人打開一個下拉列表,它填補了它,你想要的,但如果有人打開其中一個,清除前一個列表並填充選定的一個?我認爲如果用戶使用的是舊版本的機器,那對用戶會有點笨拙。 – jzm

+0

@malik是的。我可能會補充說下拉列表是jQuery組合框。如果這太笨重了,還有其他建議嗎? Bc,因爲它是,這個頁面是減速的方式。 – Mike

+0

或者服務器執行該操作,或者用戶的計算機執行該操作。取決於用戶機器的速度,您可以將其卸載到它們。但如果不是這樣,用戶可能會覺得他們的瀏覽器已掛起,而瀏覽器會加載陣列中的所有選擇框。 – jzm

回答

0

如果你想這樣做的客戶端,然後做到這一點的方法之一是使用jQuery的clone()

所以,你會做的是,就像你在你的問題具有加載第一select盒服務器端的東西。然後創建另外3個select列表,但讓它們爲空,並給它們一個class屬性,它是相同的,例如, 「我的列表級」。最後,在你的腳本文件中,你可以創建一個在啓動時運行一次的函數。

JS

function LoadSelectLists() 
    { 
    var list = $("#sel1 > option").clone(); 
    $('.my-list-class').append(list); 
    } 

的Html

<select id="sel1"> 
    <option value="a">opt1</option> 
    <option value="b">opt2</option> 
    <option value="c">opt3</option> 
</select> 
<select id="sel2" class="my-list-class"></select> 
<select id="sel3" class="my-list-class"></select> 
<select id="sel4" class="my-list-class"></select> 

小提琴:http://jsfiddle.net/2WDcz/

相關問題