下拉列表中的条件背景/字体颜色

时间:2013-10-16 17:15:21

标签: c# asp.net-mvc-4 razor

这可能吗?我在我的cshtml(razor)MVC 4中有以下内容:

@Html.DropDownListFor(v => v.Medico, ((IEnumerable<SelectListItem>)ViewBag.Medicos), new { @class="span4"})

这是在控制器上,我如何生成列表:

List<Medico> list = null;
Medico medico = null;
if (visitador != null){
    list = new List<Medico>(visitador.Medicos.OrderBy( m => m.Nombre));

    for (int i = 0; i < list.Count(); i++)
    {
        var item = list[i];
        if (i == 0 && medico == null) medico = list[i];
        medicosList.Add(new SelectListItem { Text = item.Nombre + " " + item.Apellido, Value = item.Id.ToString()});

我需要在下拉列表中以某种方式标记“Medico”符合X条件。我怎样才能实现它? 我有一个bool方法来检查可以从控制器调用的条件,但在谷歌搜索后我不知道如何“标记”这些。

2 个答案:

答案 0 :(得分:3)

无法想到如何使用selectitem列表和Html.DropDownList来做到这一点,但你可以轻松地以不同的方式做到这一点

在您的控制器中而不是现在的控制器中,只需拥有列表,因为这就是您需要的所有内容

List<Medico> list = new List<Medico>(visitador.Medicos.OrderBy( m => m.Nombre));
** Edit **

foreach(var m in list)
{
  //check each one against your repository here and have something inside of Medico to tell you the result
}

并且在您的HTML中,您可以自己轻松创建下拉列表(只要名称正确与您的模型中的属性名称相同,即Medico,绑定将起作用

<select id="Medico" name="Medico">
 @foreach(var medico in (List<Medico>)ViewBag.Medicos)
 {
   if(medico.something = "something")
      <option id="@medico.Apellido" value="@medico.Id" style="background-color: blue">@medico.Nombre</option>
   else if(medico.something ="something else")
      <option id="@medico.Apellido" value="@medico.Id" style="background-color: red">@medico.Nombre</option>
 }
</select>

基本上在foreach循环中,您可以根据条件检查每个medico变量,并根据您可以根据需要为其提供不同的类或样式

答案 1 :(得分:1)

结合此处的代码remove specific items from dropdown list using jquery和此处Change the background color of dropdownlist JQuery

看看这是否适合你

var $list = $("#myList"),
toColor= $();

for(var i = selectedItems.length; i--;) {
   toColor= toColor.add($list.find('option[value="' + selectedItems[i] + '"]'));
}
toColor.css(TextHighlightCss);