bootstrap的treeview使用方法

首先引入文件:

<link href="./css/bootstrap.css" rel="stylesheet">
<script src="./js/jquery.js"></script>
<script src="./js/bootstrap-treeview.js"></script>  

HTML 结构:

<div id="tree"></div>     //不一定是div元素  其他也可以。在这我用的div演示 
调用插件Treeview方法:
复制代码

<script>
 $(function () {
$('#tree').treeview({
color: "#428bca",
data: getDept(), //Treeview的数据源 返回json
levels: 4,
onNodeSelected: function (e, m) { //Treeview 被选中事件
var id=m.tags[0]; 
var remark=m.text; 
},
onNodeUnselected: function (e, m) { //Treeview 取消选中事件
}
})
});

</script>

//Treeview数据源方法
function getDept() {

var exc = "";
$.ajax({
type: "post",
url: "@Url.Action("getList", "Home")",
async: false,
datatype: "json",
success: function (data) {
if (!data.result) {

 alert("出现异常");
return;
}
exc = data.data;
}
});
return exc;
}


复制代码

Controllers层:

  public JsonResult getList()
        {
            ////查询列表  
            IList<TreeView> List = TreeViewService.GetDeptList(-1);  //最高部门的父id是-1
            var jSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; //忽略空值
            string json = JsonConvert.SerializeObject(List, Formatting.Indented,jSetting);
            return Json(new { result = true, data = json });
        }

Dal层:

复制代码
 public static IList<TreeView> GetDeptList(int SuperiorID = 0)
        {
            DataTable dt = SqlHelper.FillSqlDataTable("SELECT DeptName AS text,CONVERT(VARCHAR(10),ID)+','+DeptCode+','+ISNULL(Remark,'') AS tags,'' AS href FROM  dbo.Sys_Dept WHERE State=0 and  SuperiorID=" + SuperiorID);

            return GetListByTable(dt);
        }
//将Datable转成list
private static IList<TreeView> GetListByTable(DataTable dt, int kind = 0) { IList<TreeView> list = new List<TreeView>(); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { TreeView model = new TreeView(); if (row["tags"] != null) { model.tags = row["tags"].ToString().Split(','); } if (row["text"] != null) { model.text = row["text"].ToString(); } if (dt.Columns.Contains("href") && row["href"].ToString().Trim() != null) { model.href = row["href"].ToString(); } if (kind == 0) { //部门的Treeview model.nodes = GetDeptList(int.Parse(model.tags[0])); } if (kind == 1) { //菜单的Treeview model.nodes = GetMenusList(int.Parse(model.tags[0])); } list.Add(model); } return list; } return null; }
复制代码

Model 层:

复制代码
 
//bootstrap的treeview插件返回数据源json格式必须是下面这样的,所以在写sql语句时就要用 as 重命名字段,往上翻看我的sql语句就会明白。
public class TreeView { public string icon { get; set; } public string text { get; set; } public string[] tags { get; set; } public string href { get; set; } public IList<TreeView> nodes { get; set; } }
复制代码

 

posted @   .NET_海  阅读(5011)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示