在做許可權系統的時候,需要有乙個樹形的選單。下圖就是乙個樹形選單的樣式
但問題是,我們可以實現寫死的樹形選單。什麼是寫死的?就是在前台**中寫好要載入的樹形選單是什麼樣子的。但是我們許可權系統的要求是動態載入樹形選單,也就是根據資料庫裡面表的內容動態載入。
我首先要說的就是資料庫設計,要想動態載入成樹形選單,資料庫表中就一定要設定父節點id和自身id。通過父節點id判斷自身是屬於哪一級選單,而通過自身id判斷其對應的下一級選單。這是資料庫設計應該注意的地方,如果沒有父節點和自身子節點,那麼就沒辦法實現動態載入樹形選單。
動態載入樹形選單的實現利用的ztree。這裡順便提一下,ztree的**做的真的很好,而且各種型別的ztree做的非常完美。我就是利用ztree來實現的,只不過與之不同的是ztree實現的樹選單也是在前台寫好的,我們要做的就是將後台用資料庫查詢到的**拼接成前台已經寫好的**格式。
這是前台寫好的樹選單格式:
我們要做的就是將前台這種樹形選單格式在後台拼出來,而在樹形選單中顯示的選單名稱是從資料庫中查詢出來的。最開始的時候嘗試拼json串,但是事實證明,我失敗了,拼出來的字串執行的時候根本顯示不出來
拼出的json串跟咱們要拼接的格式是不同的,json串拼接出來的格式適用於結構比較簡單,這樣利用迴圈可以將需要的字串拼接出來。而我們需要的字串是需要判斷下一級是否有子節點的,這個利用json串我沒有實現,只能實現一級選單,而對應的實現**選單我沒有拼出來。很遺憾,但是利用迴圈、遍歷和datatable的查詢,最終實現了樹形選單字串的拼接。下面是我實現的**
這個對應的實現二級選單的拼接
public
string
gettree(
string
strtree)
";
chilstr = chilstr + ","
; }
chilstr = chilstr.remove(chilstr.lastindexof(","
), 1);
strtree = strtree + ",children:["
+ chilstr +
"]}];"
; }
else
];";
} }
} // parentid++;
//}return
strtree;
}
這個對應的是多級選單的拼接
public
string
gettree(
string
strtree)
";
threestr = threestr + ","
; }
threestr = threestr.remove(threestr.lastindexof(","
), 1);
string
chilname = drc[
"resourcename"
].tostring();
chilstr = chilstr + ","
;
} //如果不存在**選單的話直接載入二級選單
else
";
chilstr = chilstr + ","
; }
} chilstr = chilstr.remove(chilstr.lastindexof(","
), 1);
strtree = strtree + ",children:["
+ chilstr +
"]}];"
;
} else
];";
} }
} return
strtree;
}
最終實現的效果
其實實現這個例子的方法還有很多種,比如說遞迴。雖然json串沒有拼接成功,但是我覺得json串是可以實現的。只是鑑於個人能力的緣故最終沒有拼接成功。動態載入樹形選單終於實現的,但是還有很多需要改進的地方,比如如何將這個方法封裝起來,以至於可以無限的呼叫沒有缺陷等,這是下一步值得繼續**的問題。
------------------
------------------
C 動態載入樹選單
在做許可權系統的時候,需要有乙個樹形的選單。下圖就是乙個樹形選單的樣式 但問題是,我們可以實現寫死的樹形選單。什麼是寫死的?就是在前台 中寫好要載入的樹形選單是什麼樣子的。但是我們許可權系統的要求是動態載入樹形選單,也就是根據資料庫裡面表的內容動態載入。我首先要說的就是資料庫設計,要想動態載入成樹形...
從資料庫動態載入選單
一 資料庫設計 系統選單表 column type comment idint 選單編號 menu name varchar 一級選單名 menu num varchar 所屬的一級選單編號 picture varchar 選單url varchar 選單鏈結 is use int是否使用 sort...
動態選單 動態建立選單
動態建立選單 windows應用程式的介面,不僅僅是乙個簡單的窗體,每個窗體中都包含具體實現功 能的控制項,包括能夠顯示基本資訊的label控制項,能夠在其中輸入內容的文字框控制項,能 夠設定選項的選擇按鈕控制項等。net提供了很多使用簡單 功能強大的控制項,幫助程式設 計者快速有效地開發應用軟體。...