Для создания такого сгруппированного мультиселектора с помощью плагина jQuery, сначала вам нужно отобразить HTML-разметку для сгруппированных опций, как показано ниже
<select id="ddl_Hours">
<optgroup label="4">
<option value="1">00.00</option>
<option value="2">01.00</option>
<option value="3">02.00</option>
<option value="4">03.00</option>
</optgroup>
<optgroup label="2">
<option value="5">04.00</option>
<option value="6">05.00</option>
<option value="7">06.0</option>
</optgroup>
<optgroup label="3">
<option value="8">07.00</option>
<option value="9">08.00</option>
</optgroup>
</select>
Чтобы сгенерировать вышеуказанную разметку в вашем представлении, вы можете создатьсписок элементов в вашем методе действия со свойством Group
.
var list = db.T_MYTABLE.ToList();
//Create a list of Groups
var groups = list.Select(x => x.DayId)
.Select(f => new SelectListGroup() { Name = "Day " + f.ToString() }).ToList();
var groupedOptions = list.Select(x => new SelectListItem
{
Value = x.HourId.ToString(),
Text = x.Name,
Group = groups.FirstOrDefault(a => a.Name == "Day " + x.DayId.ToString())
}).ToList();
ViewBag.MyList = groupedOptions;
return View();
Предполагая, что Name
свойство вашей сущности имеет тип string
.Если это числовой тип, используйте метод ToString()
при установке значения свойства Text
в проекционной части вышеупомянутого запроса linq (Text=x.Name.ToString()
)
Теперь в представлении бритвы вы можете использоватьHtml.DropDownList
вспомогательный метод для визуализации элемента SELECT.
@Html.DropDownList("ddl_Hours", ViewBag.MyList as List<SelectListItem>)
или для множественного выбора
@Html.ListBox("ddl_Hours", ViewBag.MyList as List<SelectListItem>)
Теперь вы можете вызвать плагин jQuery, чтобы сделать его модным.Я бы назвал это внутри документа ready
событие
$(function () {
$('#ddl_Hours').multiselect();
})
и вуаля!
![enter image description here](https://i.stack.imgur.com/83jOm.png)