Layui treeSelect 回寫與對應選中


今天遇到個問題就是Layui treeSelect 的回寫與特定選中,網絡上居然沒啥資料,有的也是不全的,於是花了點時間處理好了,這里寫一下,方便以后有遇到的朋友借鑒。

一、父頁面

        

 

 二、Form編輯框默認選中

       

 

 三、點擊查詢選中

       選中的高亮狀態,重新選擇的可以回填。

  

 

 

四、注意事項 

 需要的是新增或者編輯打開Form頁面自動渲染,如果選中的數據父ID是根部目錄,即pId=0,則回填,如果有pId,則需要回填,點擊不替換狀態,treeSelect對應項目需要高亮,替換為新的目錄,需要能回填。

五、父頁面代碼

 1 //新增編輯
 2         function addEdit(data) {
 3             layer.open({
 4                 type: 2
 5                 , title: (data ? "編輯" : "新增") + "菜單"
 6                 , content: '/Menu/Form'
 7                 , maxmin: true
 8                 , area: ['350px', '400px']
 9                 , btn: ['提交', '取消']
10                 , success: function (layero, index) {
11                     if (data) {
12                         var content = layero.find("iframe").contents().find(".layui-form");
13                         for (var key in data) content.find("input[name='" + key + "']").val(data[key]);
14                         //content.find("select[name='AccountType'] option[value='{0}']".format(data.AccountType)).prop("selected", true);
15                         layero.find("iframe")[0].contentWindow.layui.form.render();
16                     }
17                 }
18                 , yes: function (index, layero) {
19                     var submit = layero.find('iframe').contents().find("#formSubmit");
20                     submit.click();
21                 }
22             });
View Code

需要注意的就是這句:

 

 循環傳值,就是把選中的那條數據,對應的列值,傳遞給Form頁面對應的name值。

六、Form頁面

  1 <!DOCTYPE html>
  2 <html lang="zh-CN">
  3 <head>
  4     <meta charset="UTF-8">
  5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  7     <link rel="stylesheet" href="../layui/css/layui.css">
  8     <style>
  9         .readonly {
 10             background: #f2f2f2;
 11             cursor: not-allowed;
 12         }
 13 
 14         .fileList > li {
 15             float: left;
 16             line-height: 30px;
 17             margin-left: 16px;
 18         }
 19 
 20             .fileList > li a {
 21                 color: #0082be;
 22             }
 23 
 24                 .fileList > li a:hover {
 25                     text-decoration: none;
 26                 }
 27     </style>
 28 </head>
 29 <body class="layui-view-body" style="margin:2px;2px;2px;2px;background-color:#EAEAEA">
 30     <div class="layui-container">
 31         <div class="layui-row">
 32             <div class="layui-col-xs12 layui-col-sm12 layui-col-md12">
 33                 <div class="layui-form layui-form-pane" style="padding:8px">
 34                     <input type="hidden" name="id" />
 35                     <div class="layui-card">
 36                         <div class="layui-card-body">
 37                             <div class="layui-form-item item-width100">
 38                                 <label class="layui-form-label">上級菜單</label>
 39                                 <div class="layui-input-block">
 40                                     <input type="text" id="tree" name="pId" placeholder="請填寫上級菜單名稱" class="layui-input" lay-filter="tree">
 41                                 </div>
 42                             </div>
 43                             <div class="layui-form-item item-width100">
 44                                 <label class="layui-form-label">菜單圖標</label>
 45                                 <div class="layui-input-block">
 46                                     <input type="text" name="icon" placeholder="請填寫上級菜單圖標" class="layui-input">
 47                                 </div>
 48                             </div>
 49                             <div class="layui-form-item item-width100">
 50                                 <label class="layui-form-label"><span style="color:red">*</span>菜單路徑</label>
 51                                 <div class="layui-input-block">
 52                                     <input type="text" name="url" placeholder="請填寫菜單路徑" class="layui-input" lay-verType="tips" lay-verify="required" required>
 53                                 </div>
 54                             </div>
 55                             <div class="layui-form-item item-width100">
 56                                 <label class="layui-form-label"><span style="color:red">*</span>菜單名稱</label>
 57                                 <div class="layui-input-block">
 58                                     <input type="text" name="name" placeholder="請填寫菜單名稱" class="layui-input" lay-verType="tips" lay-verify="required" required>
 59                                 </div>
 60                             </div>
 61                             <div class="layui-form-item item-width100">
 62                                 <label class="layui-form-label"><span style="color:red">*</span>排序編號</label>
 63                                 <div class="layui-input-block">
 64                                     <input type="number" name="sort" placeholder="請填寫排序編號" class="layui-input" lay-verType="tips" lay-verify="required|number" required>
 65                                 </div>
 66                             </div>
 67                         </div>
 68                     </div>
 69                     <div class="layui-form-item layui-hide">
 70                         <input type="button" lay-submit lay-filter="formSubmit" id="formSubmit">
 71                     </div>
 72                 </div>
 73             </div>
 74         </div>
 75     </div>
 76 
 77     <script src="../layui/layui.all.js"></script>
 78     <script src="../js/jquery-3.1.1.min.js"></script>
 79     <script type="text/javascript">
 80         //引用第三方插件 treeselect
 81         layui.config({
 82             base: '../js/'
 83         }).extend({
 84             treeSelect: 'treeSelect/treeSelect',
 85         });
 86 
 87         layui.use(['treeSelect', 'form', 'layer'], function () {
 88             var $ = layui.jquery;
 89             var treeSelect = layui.treeSelect;
 90             var form = layui.form;
 91             var layer = layui.layer
 92 
 93             //加載上級菜單樹
 94             treeSelect.render({
 95                 elem: '#tree',
 96                 //data: '../json/data3.json',
 97                 data: '../Menu/GetMenuTree',
 98                 type: 'get',
 99                 placeholder: '請選擇上級菜單',
100                 search: true,
101                 style: {
102                     folder: { enable: false },
103                     line: { enable: true }
104                 },
105                 // 點擊回調
106                 click: function (d) {
107                     $('#tree').val(d.current.id);
108                 },
109                 // 加載完成后的回調函數
110                 success: function (d) {
111                     //獲取返回的父節點
112                     var pIdValue = $("#tree").val();
113 
114                     if (pIdValue !== 0 && pIdValue !== null && pIdValue !== "" && pIdValue !== undefined) {
115                         //默認選中節點,根據id篩選
116                         treeSelect.checkNode('tree', pIdValue);
117                     }
118 
119                     // 獲取zTree對象,可以調用zTree方法
120                     //var treeObj = treeSelect.zTree('tree');
121 
122                     ////刷新樹結構
123                     //treeSelect.refresh('tree');
124                 }
125             });
126 
127             //監聽提交
128             form.on("submit(formSubmit)", function (data) {
129                 var entity = data.field, index = parent.layer.getFrameIndex(window.name);
130                 $.ajax({
131                     url: "../Menu/SaveMenu",
132                     type: "get",
133                     dataType: "json",
134                     data: { strJson: JSON.stringify(data.field) },
135                     success: function (res) {
136                         if (res.code == 0) {
137                             layer.msg(res.msg, { icon: 1 });
138                             setTimeout(function () {
139                                 parent.layer.close(index);
140                                 //parent.layui.table.reload("menuTable");
141                                 window.parent.location.reload();//刷新父頁面
142                             }, 500)
143                         } else {
144                             layer.msg(res.msg, { icon: 2 });
145                         }
146                     }
147                 });
148             });
149         });
150     </script>
151 </body>
152 </html>
View Code

特別注意這幾點:

 

 

 

 父頁面刷新參考:

 

 

 

  希望對大家有幫助。本內容原創,轉載請注明出處哈!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM