您的位置:首页 > 其它

【项目实战】——Tree树显示过程核心

2017-07-28 17:02 309 查看

前言:

最近的项目中用到了曲线,但在这个过程中Tree树的显示是它的基础,不仅用到了一层的Tree,也用到了两层的Tree,小编的上一篇博客中对Tree树进行了简单介绍,这次对于一层和两层的Tree树显示过程中Controller的核心代码进行了总结。

一层的Tree:

效果:

核心代码:

public ActionResult queryIndicator(int PrjID , int VolunteerGroupID,int VolunteerID )
{
DataTable dt = new DataTable();

dt = bll.queryIndicator(PrjID,VolunteerGroupID,VolunteerID);
List<JsonTree> list = initTree(dt);
var json = JsonConvert.SerializeObject(list);
return Content(json);
}

//目录树相关
public List<JsonTree> initTree(DataTable dt)
{
DataRow[] drList = dt.Select();
List<JsonTree> rootNode = new List<JsonTree>();
foreach (DataRow dr in drList)
{
JsonTree jt = new JsonTree();
jt.id = Convert.ToInt32(dr["IndicatorCode"]);
jt.iconCls = "icon-blank";
jt.text = dr["IndicatorName"].ToString();
jt.state = "open";
rootNode.Add(jt);

}
return rootNode;
}


两层的Tree树:

效果:

核心代码:

//(目录树)
public ActionResult GetVolunGroup(int prjID)
{
DataTable dt = new DataTable();
dt = bllVolunBasicMulAna.GetVolunGroup(prjID);
List<JsonTree> list = initTree(dt);
var json = JsonConvert.SerializeObject(list);
return Content(json);

}

//目录树相关
public List<JsonTree> initTree(DataTable dt)
{
DataRow[] drList = dt.Select();//所有表数据
List<JsonTree> parentNodes = new List<JsonTree>();//父级节点
foreach (DataRow dr in drList)
{
JsonTree parentNode = null;
parentNode = parentNodes.Find(e => e.id == Convert.ToInt32(dr["VolunteerGroupID"]));
if (parentNode == null)
{
parentNode = new JsonTree();
parentNode.id = Convert.ToInt32(dr["VolunteerGroupID"]);
parentNode.text = dr["VolunGroupName"].ToString();
parentNode.state = "closed";
parentNode.iconCls = "icon-blank";
//jt.attributes = CreateUrl(dt, jt);
parentNode.children = CreateChildTree(dt, parentNode);//子集节点
parentNodes.Add(parentNode);
}
//若该父节点已存在
else
{
continue;
}
}
return parentNodes;
}


总结:

初次接触感觉很难,要静下心来仔细分析,慢慢就会发现其实并没有想想中的那么难,站在巨人的肩膀上,不断前进。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐