最近在對DWZ和asp.net MVC3進行整合,其中遇到了很多問題,總算一一解決了,今天就說說題目所示的問題解決方案。
想做一個基於角色的權限管理,要對每一個Action進行權限控制。就想用DWZ的Tree樹形菜單來做,結果在做的過程之中,發現DWZ的Tree樹形菜單,自帶的treeCheck無法返回選擇的值,遇到過這種問題的朋友,應該知道這個情況。雖然官方提供一個KKK的源碼樣本,但基本沒用,因為菜單前的復選框取消選擇時,Json返回的items是空值。
經過網上搜索,沒有找到有效的答案,最后自己想辦法解決了,方法很笨拙,但有效。解決方法就是自己手動添加CheckBox,不要用它的treeCheck屬性,也不要用它的鏈接擴展屬性。
我先用簡單的mvc示例代碼循環出菜單
<ul class="tree treeFolder expand"> @for(int i=1;i<=3;i++) { <li><a href="javascript:void(0);">一級菜單 @i</a> <ul> @for(int m=1;m<=5;m++) { <li><label><input type="checkbox" id="@("menu"+i+m)" />二級菜單 @m</label></li> } </ul> </li> } </ul>
然后在頁面上其它隨便某個地方放置一個按鈕,觸發Jquery事件。
<input type="submit" id="btn" value="輸出選擇內容" />
然后編寫JQuery代碼或js代碼就可以了。
<script type="text/javascript"> $(function () { $("#btn").click(function () { var str = ""; $('input[type="checkbox"]:checked').each(function (i, e) { str += e.id + ","; }); str = str.substring(0, str.length - 1); $("#resultBox").html(str); }); }); </script>
選擇好需要的對象后,點擊這個按鈕就成了。如圖
說得不是很清楚,沒用過DWZ的樹形菜單的朋友肯定不知所雲,但用過並遇到這種情況的朋友,就知道我說的是什么了。