Tree 樹形控制元件的顯示和更改
如圖這種樹形控制元件的顯示和內容修改的實現問題,我做的需求最多層級是三級內容。
首先在請求成功的函式中去遍歷請求回來的資料如下:
let obj = {}; let myList = []; for (let item of this.roleRightList) { // debugger if(item.children){ for (let item1 of item.children) { if(item1.checked){ if(item1.children){ for (let item2 of item1.children) { if (item2.checked) { if(item2.children){ for (let item3 of item2.children) { if (item3.checked) { obj.id = item3.id; obj.label = item3.name; myList.push(JSON.parse(JSON.stringify(obj))); this.$nextTick(() => { this.$refs.tree.setCheckedNodes(myList); }); } } }else { obj.id = item2.id; obj.label = item2.name; myList.push(JSON.parse(JSON.stringify(obj))); this.$nextTick(() => { this.$refs.tree.setCheckedNodes(myList); }); } }else { if(item2.children){ for (let item3 of item2.children) { if (item3.checked) { obj.id = item3.id; obj.label = item3.name; myList.push(JSON.parse(JSON.stringify(obj))); this.$nextTick(() => { this.$refs.tree.setCheckedNodes(myList); }); } } } } } }else { obj.id = item1.id; obj.label = item1.name; myList.push(JSON.parse(JSON.stringify(obj))); this.$nextTick(() => { this.$refs.tree.setCheckedNodes(myList); }); } } else { if(item1.children){ for (let item2 of item1.children) { if(item2.checked){ obj.id = item2.id; obj.label = item2.name; myList.push(JSON.parse(JSON.stringify(obj))); this.$nextTick(() => { this.$refs.tree.setCheckedNodes(myList); }); } } } } } } }
在標籤上面這樣寫:
<el-tree
:data="roleRightList"
show-checkbox
default-expand-all
node-key="id"
ref="tree"
highlight-current
@check="handleCheckChange"
:props="defaultProps">
</el-tree>
這樣就把從後臺請求回來的checked為true的顯示出來了。
下面開始實現修改之後將修改的資料傳給後臺,如果只修改一條資料就將這條資料的id和checked傳給後臺,如果修改了父級就把父級以及子級對應的id和checked放在一個list中傳給後臺:
handleCheckChange(data, checked, indeterminate) { // debugger let obj = {}; let obj2 = {}; if (data.children) { // debugger if(data.checked){ obj2.checked = false; } else { obj2.checked = true; } obj2.id = data.id; this.params.push(JSON.parse(JSON.stringify(obj2))); for (let i in data.children) { if(data.checked){ obj2.checked = false; } else { obj2.checked = true; } obj2.id = data.children[i].id; this.params.push(JSON.parse(JSON.stringify(obj2))); if(data.children[i].children){ // if(data.children[i].checked){ if(data.checked){ obj2.checked = false; } else { obj2.checked = true; } obj2.id = data.children[i].id; this.params.push(JSON.parse(JSON.stringify(obj2))); for (let j in data.children[i].children) { // if(data.children[i].checked){ if(data.checked){ obj2.checked = false; } else { obj2.checked = true; } obj2.id = data.children[i].children[j].id; this.params.push(JSON.parse(JSON.stringify(obj2))); if(data.children[i].children[j].children){ // if(data.children[i].children[j].checked){ if(data.checked){ obj2.checked = false; } else { obj2.checked = true; } obj2.id = data.children[i].children[j].children.id; this.params.push(JSON.parse(JSON.stringify(obj2))); for(let p in data.children[i].children[j].children){ // if(data.children[i].children[j].checked){ if(data.checked){ obj2.checked = false; } else { obj2.checked = true; } obj2.id = data.children[i].children[j].children[p].id; this.params.push(JSON.parse(JSON.stringify(obj2))); if(data.children[i].children[j].children[p].children){ // if(data.children[i].children[j].children[p].checked){ if(data.checked){ obj2.checked = false; } else { obj2.checked = true; } obj2.id = data.children[i].children[j].children[p].id; this.params.push(JSON.parse(JSON.stringify(obj2))); for(let b in data.children[i].children[j].children[p].children){ // if(data.children[i].children[j].children[p].checked){ if(data.checked){ obj2.checked = false; } else { obj2.checked = true; } obj2.id = data.children[i].children[j].children[p].children[b].id; this.params.push(JSON.parse(JSON.stringify(obj2))); } } } } } } } }else { if (data.checked) { obj.checked = false; } else { obj.checked = true; } obj.id = data.id; this.params.push(JSON.parse(JSON.stringify(obj))); } },
第一次做樹形需求,程式碼可能還需進一步完善。
相關推薦
Tree 樹形控制元件的顯示和更改
如圖這種樹形控制元件的顯示和內容修改的實現問題,我做的需求最多層級是三級內容。 首先在請求成功的函式中去遍歷請求回來的資料如下: let obj = {}; let myList = []; for (let item of this.roleRightList) {
遞迴組裝Cascader 級聯選擇器和Tree 樹形控制元件結構的資料
以商品分類表為例,重點看分類ID和父分類ID public List<Map<String,Object>> getGoodsCategoryTree() { //1.獲取所有商品分類,條件:category_id!=0(0為頂級選單的父類I
ajax獲取巢狀JSON,樹形控制元件顯示
Ztree的api連結: http://www.treejs.cn/v3/demo.php#_113 上面有許許多多的例子,但是都是自己手寫的資料。在現實生活中,很多時候資料都是通過後臺獲取的,當獲取的是資料是單層的json,鍵名和例子一樣的時候可以直接使用,而且比較簡單。但是,很多時候是巢
C#中使用DateTimePicker控制元件顯示和修改日期時間
在Winform程式有一個DateTimePicker控制元件,這個控制元件是用來顯示和修改日期時間的,但預設只顯示日期和修改日期。若要顯示和修改時間,則要自定義設定,方法如下: 在Winform程式新增一個DateTimePicker控制元件,命名為dtpT
Android控制元件顯示和隱藏
Android控制元件都有visibility屬性,該屬性有三個值:visible、invisible、gone。可以通過預設或者是Java程式碼來控制這些控制元件的顯示或者是隱藏。 一、在XML配
vue elementUI tree樹形控制元件如何獲取父節點ID
首先找到element-ui.common.js檔案 如下 具體看你工程下的node_modulesD:\workSpace\vue_manage\node_modules\element-ui\lib\element-ui.common.js找到getCheckedNode
基於vue.js 2.0,不使用webpack的nodejs服務,只在瀏覽器上單獨使用在Element UI的Tree樹形控制元件
Vue.js(讀音 /vjuː/,類似於 view) 是一套構建使用者介面的漸進式框架。與其他重量級框架不同的是,Vue 採用自底向上增量開發的設計。Vue 的核心庫只關注檢視層,它不僅易於上手,還便於與第三方庫或既有專案整合。另一方面,當與單檔案元件和 Vue
tree樹形控制元件之迴圈遍歷
最近在寫程式時需要對樹形控制元件進行查詢指定文字的內容,因此寫了本函式。 //item:待遍歷樹的根節點,strtext:待查詢節點名稱HTREEITEM Ctest2Dlg::FindItem(CTreeCtrl &ctrlTree ,HTREEITEM it
Winform下使用ListView控制元件和ImageList控制元件顯示圖片縮圖
一、基本概念 1、ImageList控制元件 ImageList元件,又稱為圖片儲存元件,它主要用於儲存圖片資源,然後在控制元件上顯示出來,這樣就簡化了對圖片的管理。ImageList元件的主要屬性是Images,它包含關聯控制元件將要使用的圖片。每個單獨的圖片可以通過其索引值或鍵值來訪問。
unity3d嵌入到iOS工程(3d物體和iOS控制元件顯示在同一個view上)
最近公司要開發一款用於3d展示的應用,通過在網上拜讀各大神的帖子,終於完美解決此類問題。(unity3d版本2017.3,xcode9.2) 前邊unity3d打包iOS工程的方法在此就不做贅述,其他帖子基本可以解決,本帖直接上乾貨。 1、在打包好的iOS工程中,找到UnityAppCont
elementui 後臺管理系統遇到的問題(二) 樹形控制元件 el-tree
elementui中樹形控制元件的使用 一、將後臺返回的資料填充到前端控制元件中,需要注意的幾點問題 (1)、el-tree中需要繫結node-key='自定義的id名稱' (2)、在配置data中defaultProps中的屬性時,要按照與後端協商的欄位名稱對稱 (3)、重要的是要月後端協商返回欄位內容
Unity樹形控制元件(Tree View)的使用
1.下載外掛Tree View匯入到工程中。下載地址:https://assetstore.unity.com/packages/tools/gui/tree-view-65364。 2.新建場景,新建Canvas,將Assets\Battlehub\UIControls
ASP.NET中利用DataGrid控制元件顯示圖片以及在圖片和文字上加超連結
資料表: 介面程式碼: <asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False" BorderWidth="0px" PageSiz
調整MFC 控制元件顯示層次調整,即(疊放次序)和繪製遮擋問題
控制元件有的放在上面有的放在下面,但是不小心次序弄錯了,那麼怎麼糾正呢? VC檢視視窗的控制元件,按下ctrl +D 可以看到他們的顯示層次,數字小的最底層,要調整其中的順序,就是在按下CTRL+D看到各個控制元件的次序後,用滑鼠挨個點選一下就重新排序了,先點選的是1,再點
OpenCV學習筆記(9)利用MFC的Picture控制元件顯示影象+播放視訊和捕獲攝像頭畫面
P.S.:後面又添加了播放視訊和捕獲攝像頭畫面的功能,其中播放視訊的功能只有 'Play' 和 'Stop',不能實現暫停,《A step-by-step guide to the use of Microsoft Visual C++ and the Intel Ope
MFC 控制元件顯示層次調整(疊放次序)和繪製控制問題
使用MFC的設計器,想調整控制元件的疊放次序,怎麼也找不到在哪,網上搜了一大圈,原來... 在視窗介面按Ctrl+D,每個控制元件會顯示一個編號,這個編號決定繪製的順序,即疊放的次序,號小的會先被繪製,即繪製在下方。 另外如果發現疊放在一起的控制元件有時會得不到及時的重新整
帶有『選擇次數排序』和『搜尋』功能的樹形控制元件設計與實現
一、思想創意 樹形控制元件是軟體操作介面中最常見的一種資料展現控制元件,如下圖所示: 圖1 這就是我們常見的樹形結構,目前有很多樹控制元件可以供我們選擇使用,如zTree、Ext中的樹控制元件,等等。 樹形控制元件這麼多,但實現的功能就是上面這張圖,樹
winform,DataGridView繫結資料後更改列屬性、動態建立(用一個控制元件顯示多表適用)
DataGridView 特效 = new DataGridView(); string[] 列名 = { "直線", "炸彈", "骷髏", "禮盒" },
安卓(Android )軟鍵盤的控制(顯示和隱藏)
false def gets nbsp bool code 表示 soft 系統 Activity 啟動時軟鍵盤默認狀態 在清單文件(manifest .xml)中可以通過在 Activity 標簽中增加屬性控制軟鍵盤的默認狀態: android:windowSoftIn
Android中使用ImageView控制元件顯示網路圖片
在android4.0以後的版本中,為了使得主介面流暢,所以設定了不允許在主執行緒中訪問網路,為了安全,又不允許在其它執行緒中訪問控制元件,這樣就造成了ImageView等需要使用網路的控制元件更新時的問題,本文以Handler+Runnable的方式實現了ImageView控制元件顯示網路圖片.