前言:
最近的项目中用到了曲线,但在这个过程中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;
}
总结:
初次接触感觉很难,要静下心来仔细分析,慢慢就会发现其实并没有想想中的那么难,站在巨人的肩膀上,不断前进。