У меня эти очень большие выпадающие списки (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)
Как я могу сделать что-то подобное?
Если вы хотите сделать это на стороне клиента, тогда один из способов сделать это - использовать jquery clone()
Итак, что бы вы сделали, загрузите первую серверную сторону сервера select
как в вашем вопросе. Затем создайте 3 других списка select
но оставьте их пустыми и присвойте им атрибут class
который будет таким же, например, "my-list-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/