1. 程式人生 > 程式設計 >C# MVC 使用LayUI實現下拉框二級聯動的功能

C# MVC 使用LayUI實現下拉框二級聯動的功能

一、layui.use

1、LayUI的官方使用文件:https://www.layui.com/doc/

2、layui的內建模組不是預設就載入好的,必須要執行啟動模組的這種方法後模組才會載入;

3、layui.use就是一種載入模組的方式。

如下程式碼:

//LayUI渲染以及啟動模組
   layui.use(['form','layedit','laydate'],function () {
        var form = layui.form,//獲取form模組
        layer = layui.layer,//獲取layer模組
        layedit = layui.layedit,//獲取layedit模組
        laydate = layui.laydate,//獲取laydate模組
        $ = layui.$;

二、建立控制器或在已有的控制器中新增在操作方法

/// <summary>
    /// 獲取部門資訊
    /// </summary>
    [HttpPost]
    public JsonResult GetDeplist()
    {
      using (ERPEntities db = new ERPEntities())
      {
        db.Configuration.ProxyCreationEnabled = false;//關閉EF的預設載入
        var Deplist = db.dep.ToList();
        //將資料Json化並傳到前臺檢視
        return Json(new { data = Deplist },JsonRequestBehavior.AllowGet);
      }
    }

      /// <summary>
     /// 通過部門ID來獲取角色
     /// </summary>
     /// <param name="dep_id">部門ID</param>
     /// <returns></returns>
     [HttpPost]
    public JsonResult GetRolelist(int dep_id)
    {
      using (ERPEntities db = new ERPEntities())
      {
        db.Configuration.ProxyCreationEnabled = false;//關閉EF的預設載入
        var Roles = db.role.Where(r => r.dep_id == dep_id).ToList();//通過部門ID 查詢到對應的角色
        List<SelectListItem> item = new List<SelectListItem>();
        foreach (var Role in Roles)
        {
          item.Add(new SelectListItem { Text = Role.name,Value = Role.role_id.ToString() });
        }
        //將資料Json化並傳到前臺檢視
        return Json(new { data = item },JsonRequestBehavior.AllowGet);
      }
    }

三、在需要顯示多級聯動的檢視頁面寫上如下程式碼

<!--部門角色二級聯動-->
  <div class="layui-form-item">
    <label class="layui-form-label">部門:</label>
    <div class="layui-input-inline">
      <select name="Dep" lay-filter="parentDep" id="Dep">
        <option value="">——請選擇部門——</option>
      </select>
    </div>
    <label class="layui-form-label">角色:</label>
    <div class="layui-input-inline">
      <select name="Role" id="Role" lay-filter="RoleInfo">
        <option value="">——請選擇角色——</option>
      </select>
    </div>
  </div>

四、JS部分的程式碼

  注意:有的夥伴可能需要先引入jquery;根據自己的需求以及實際情況進行引入

<script src="~/Scripts/jquery-3.5.1.js"></script>
<script type="text/javascript">
    // 封裝獲取角色的函式:通過部門ID得到角色
    function getRoles(data) {
      //獲取到部門框中的Value部門的ID
      var dep_id = {
        dep_id: data.value
      }
     //再利用ajax將資料傳到後端,來獲取到對應下拉框選項而出現的值
    //檢查專案新增到下拉框中
    $.ajax({
      url: "@Url.Action("GetRolelist")",dataType: 'json',data: JSON.stringify(dep_id),//將引數Json化,在傳遞給後臺控制器
      contentType: "application/json",type: 'post',success: function (result) {
        console.info(result.data);
        $("#Role").empty();//清空下拉框的值
        $.each(result.data,function (index,item) {
          $('#Role').append(new Option(item.Text,item.Value));// 下拉選單裡新增元素
        });
        layui.form.render("select");//重新渲染 固定寫法
      }
    });
  };
  //LayUI渲染以及啟動模組
   layui.use(['form',//獲取laydate模組
        $ = layui.$;
        // 得到部門
        $.ajax({
          url: "@Url.Action("GetDeplist")",success: function (result) {
              $.each(result.data,item) {
                $('#Dep').append(new Option(item.name,item.dep_id));// 下拉選單裡新增元素
          });
          layui.form.render("select");//重新渲染 固定寫法
          }
        });
        // 聯動
        form.on('select(parentDep)',function (data) {
          //監聽到了下拉框選擇的選項,傳遞過來
          //console.info(data);
          getRoles(data);
        });
    });
</script>

1.select的chage監聽事件使用:

form.on('select(myselect)',function(data){}) 其中myselect是select的 lay-filter屬性值

2.資料非同步載入到select的option中之後,點選該select會發現layui的選中效果不起作用,需要使用
form.render('select');重新渲染一次,就可以正常使用。

聯動效果如下:

C# MVC 使用LayUI實現下拉框二級聯動的功能

以上就是C# MVC 使用LayUI實現下拉框二級聯動的功能的詳細內容,更多關於C# 實現下拉框二級聯動的資料請關注我們其它相關文章!