如果选择了组中的任何选项,则应使用Bootstrap Multiselect(optgroups)

时间:2017-03-07 17:05:13

标签: asp.net-mvc twitter-bootstrap bootstrap-multiselect

我正在使用Bootstrap multiselect(https://davidstutz.github.io/bootstrap-multiselect/

我在下拉列表中有两个组。

选择顶部组中的任何选项后,第二组中的所有项目都将被禁用。

我应该能够从第二组中选择任何选项。

我的控制器绑定数据,列表按county_category分组。 :

public void CHDSList()
    {List<SelectList> CHDSListList = new List<SelectList>();
        ViewData["CHDSList"] = new SelectList((from s in objentity.tbl_CountiesMst.ToList().OrderBy(a => a.County_Code)
                                 select new
                                  {
                                       County_Code = s.County_Code,
                                       County_Name = s.County_Code +" - " + s.County_Name,
                                       County_category = s.County_Category
                                  }), "County_Code", "County_Name", "county_category", 1);


    }

在视图中,我有这个......

$('.listbox').multiselect({
        includeSelectAllOption: false,
        buttonWidth: '100%',
        maxHeight: 200,
        enableClickableOptGroups: true   })

@Html.ListBox("ChdListBox", (SelectList)(IEnumerable<SelectListItem>)ViewData["CHDSList"],
         new { @class = "listbox", @style = "text-align:left; multiple=multiple; 
              width:100px;min-width:100%; height:30px; border-color:lightblue" })

multiselect dropdown image

1 个答案:

答案 0 :(得分:0)

您可以在multiselect中使用optgroup的id属性来使用jquery禁用该组。并且不要忘记在禁用后刷新多选,如代码片段所示。 如果要禁用,则必须启用它。

请参阅此代码段:

 
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/js/bootstrap-multiselect.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" type="text/css"/>
<script type="text/javascript">
 $(document).ready(function () {
        $('#multiselect').multiselect({
            onChange: function (option, checked, select) {
                var groupId = $(option).closest('optgroup').prop('id')
                if (groupId == "optgroup1") {
                    $('#multiselect optgroup#optgroup2').prop('disabled', true);
                    $('#multiselect').multiselect('refresh');
                }
            }
        })
    });
</script>
</head>
<body>
 <select id="multiselect" multiple="multiple">
        <optgroup label="Group 1" id="optgroup1">
            <option value="1">Option 1</option>
            <option value="2">Option 2</option>
            <option value="3">Option 3</option>
        </optgroup>
        <optgroup label="Group 2" id="optgroup2">
            <option value="4">Option 4</option>
            <option value="5">Option 5</option>
            <option value="6">Option 6</option>
        </optgroup>
    </select>
</body>
</html>