想實作一個權限分配的功能。
左邊是用戶,右邊是選單權限,怎么連接SQL庫表,當選中用戶的時候,顯示當前權限,確認treeview節點,回寫到用戶。

請大佬們賜教,小白一枚。
uj5u.com熱心網友回復:
先一個資料庫查詢,獲取所有用戶,填寫list。當一條list被選中的時候再一個資料庫查詢,以該客戶id之類的為條件查詢客戶權限串列,填充tree。uj5u.com熱心網友回復:
list里已經獲取了所有用戶,填充treeview的代碼的代碼不會寫。[/img]
uj5u.com熱心網友回復:
每個用戶的“權限”,不是“平級關系”嗎?為何要用“樹”控制元件?
各種權限,是分了類別的么……
uj5u.com熱心網友回復:
按照選單欄分類了。大概效果就是這樣,目前的樹是我手打的,不是連接資料庫自動生成的。
uj5u.com熱心網友回復:
兩種做法
1、當用戶被點擊,清空右邊的樹,獲取該用戶的所有權限資料,然后組織成樹,填充
2、先將系統中所有的權限組織成樹填充。當用戶被點擊,獲取該用戶的所有權限資料,然后逐個節點確定是否該勾選。
uj5u.com熱心網友回復:
先一個資料庫查詢,獲取所有用戶,填寫list。當一條list被選中的時候再一個資料庫查詢,以該客戶id之類的為條件查詢客戶權限串列,填充tree。
list里已經獲取了所有用戶,填充treeview的代碼的代碼不會寫。[/img]
兩種做法
1、當用戶被點擊,清空右邊的樹,獲取該用戶的所有權限資料,然后組織成樹,填充
2、先將系統中所有的權限組織成樹填充。當用戶被點擊,獲取該用戶的所有權限資料,然后逐個節點確定是否該勾選。
我覺得應該是用方法2較好。
樹的顯示內容應該是一樣的,選不同的用戶時,僅是“鉤選 與 不鉤”的區別。
uj5u.com熱心網友回復:
先一個資料庫查詢,獲取所有用戶,填寫list。當一條list被選中的時候再一個資料庫查詢,以該客戶id之類的為條件查詢客戶權限串列,填充tree。
list里已經獲取了所有用戶,填充treeview的代碼的代碼不會寫。[/img]
兩種做法
1、當用戶被點擊,清空右邊的樹,獲取該用戶的所有權限資料,然后組織成樹,填充
2、先將系統中所有的權限組織成樹填充。當用戶被點擊,獲取該用戶的所有權限資料,然后逐個節點確定是否該勾選。
我覺得應該是用方法2較好。
樹的顯示內容應該是一樣的,選不同的用戶時,僅是“鉤選 與 不鉤”的區別。
看具體情況,如果系統總的權限就幾十個,用2。
像那種幾百個業務選單,甚至細化到資料展示權限的,那還是用1比較不招人煩
uj5u.com熱心網友回復:
先一個資料庫查詢,獲取所有用戶,填寫list。當一條list被選中的時候再一個資料庫查詢,以該客戶id之類的為條件查詢客戶權限串列,填充tree。
list里已經獲取了所有用戶,填充treeview的代碼的代碼不會寫。[/img]
問問度娘,tree view的演示代碼遍地都是
uj5u.com熱心網友回復:
先一個資料庫查詢,獲取所有用戶,填寫list。當一條list被選中的時候再一個資料庫查詢,以該客戶id之類的為條件查詢客戶權限串列,填充tree。
list里已經獲取了所有用戶,填充treeview的代碼的代碼不會寫。[/img]
兩種做法
1、當用戶被點擊,清空右邊的樹,獲取該用戶的所有權限資料,然后組織成樹,填充
2、先將系統中所有的權限組織成樹填充。當用戶被點擊,獲取該用戶的所有權限資料,然后逐個節點確定是否該勾選。
按照方法2,可以直接添加節點生成樹嘛?還是要連接庫表自動填充?
我現在設計了三個表,用戶表,權限表,用戶權限對應表。
uj5u.com熱心網友回復:
先一個資料庫查詢,獲取所有用戶,填寫list。當一條list被選中的時候再一個資料庫查詢,以該客戶id之類的為條件查詢客戶權限串列,填充tree。
list里已經獲取了所有用戶,填充treeview的代碼的代碼不會寫。[/img]
兩種做法
1、當用戶被點擊,清空右邊的樹,獲取該用戶的所有權限資料,然后組織成樹,填充
2、先將系統中所有的權限組織成樹填充。當用戶被點擊,獲取該用戶的所有權限資料,然后逐個節點確定是否該勾選。
按照方法2,可以直接添加節點生成樹嘛?還是要連接庫表自動填充?
我現在設計了三個表,用戶表,權限表,用戶權限對應表。
用戶表用來生成左邊的串列
權限表用來生成右邊的樹
點選用戶記錄以后到用戶權限對應表中查詢其權限記錄,然后填充右邊樹的復選框。
uj5u.com熱心網友回復:
權限的資料庫資訊、組織結構又沒有“國際標準”,怎么可能由控制元件給你實作自動填充!!!這個只能自己用代碼處理、顯示啊,怎么總是想著“自動”???
uj5u.com熱心網友回復:
權限的資料庫資訊、組織結構又沒有“國際標準”,怎么可能由控制元件給你實作自動填充!!!
這個只能自己用代碼處理、顯示啊,怎么總是想著“自動”???
大神誤會我“自動”的意思了,不是說什么都不用做。
我直接添加節點的意思是Set Nodeindex = TreeView.Nodes.Add(, , "爺1", "系統管理", "K1")
Set Nodeindex = TreeView.Nodes.Add("爺1", tvwChild, "父1", "用戶管理", "K2")
自動的意思是,連接資料庫,通過代碼將表填充treeview,這個是不是要考慮回圈?然后問題就是連接庫表,括號里的代碼我不會寫。。。
uj5u.com熱心網友回復:
謝謝“脆皮大雪糕”的提點,思路現在很清楚了,代碼實作還有點問題。我去找找實體學習下,網上好多treeview的代碼都是添加洗掉節點什么的控制實體。有我這種類似功能的實體推薦嘛?
uj5u.com熱心網友回復:
我還以為你想“給控制元件設定查詢條件、然后控制元件自動重繪顯示內容、自動鉤選/不鉤選相關專案”呢。(自己不說明白,怪我咯……)
能不能“回圈”,那要看你的“查詢結果”的資訊是什么樣的啊……

如果只有幾項、十來項,你不清楚如何用回圈,就用一堆IF……End If 來處理也可以。
但如果專案多了,肯定得考慮回圈結構的流程來處理。
能不能實作,就要看你的資料庫資訊如何組織、查詢結果能不能“反映層次、從屬關系”了。
uj5u.com熱心網友回復:
我沒學過VB,最近是在自學。。。
先一個資料庫查詢,獲取所有用戶,填寫list。當一條list被選中的時候再一個資料庫查詢,以該客戶id之類的為條件查詢客戶權限串列,填充tree。
list里已經獲取了所有用戶,填充treeview的代碼的代碼不會寫。[/img]
問問度娘,tree view的演示代碼遍地都是
大神,我的權限表是這樣的。

然后添加了根節點:
Dim nodX As node
sql = "select Menu_Title from menu where ParentID IS NULL"
Rs.Open sql, conn, adOpenKeyset
If Rs.RecordCount <> 0 Then
Do While Rs.EOF = False
Set nodX = Trv.Nodes.Add(, , Rs.Fields("Menu_Title").Value, Rs.Fields("Menu_Title").Value, 1)
Rs.MoveNext
Loop
End If
子節點的relative和key、text不太好寫了。該怎么辦?這個Add怎么設計好。。。求指點。
uj5u.com熱心網友回復:
我還以為你想“給控制元件設定查詢條件、然后控制元件自動重繪顯示內容、自動鉤選/不鉤選相關專案”呢。
(自己不說明白,怪我咯……)
能不能“回圈”,那要看你的“查詢結果”的資訊是什么樣的啊……
如果只有幾項、十來項,你不清楚如何用回圈,就用一堆IF……End If 來處理也可以。
但如果專案多了,肯定得考慮回圈結構的流程來處理。
能不能實作,就要看你的資料庫資訊如何組織、查詢結果能不能“反映層次、從屬關系”了。
大佬能不能指條treeview.nodee.add的明路?子節點想不出怎么增加。。。
uj5u.com熱心網友回復:
填充Treeview的問題終于搞贏了,不容易。接下來,解決 “點選用戶確認Treeview的復選框” 的問題。
有大神指導嘛?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/52817.html
標籤:控件
下一篇:關閉當前作業簿不保存
