public ResponseFuncTreeCheckedGet FuncTreeCheckedGet(RequestFuncTreeCheckedGet request) { ResponseFuncTreeCheckedGet response = new ResponseFuncTreeCheckedGet(); using (cnn = GetConnection()) { var ts = cnn.BeginTransaction(); try { string sql = @"WITH CTE(id, name, img, PARENTID,seq) AS (SELECT id,name,img, PARENTID,seq FROM tks_fas_function WHERE id = @Id UNION ALL SELECT B.id,B.name,B.img,B.PARENTID,B.Seq FROM tks_fas_function B INNER JOIN CTE ON B.PARENTID = CTE.id) SELECT * FROM CTE order by seq"; var funcs = cnn.Query <TKS_FAS_Function>(sql, new { Id = "-" }, ts).ToList(); sql = "select * from TKS_FAS_Entity2Function where type=@Type and entityId=@EntityId"; var checkedFuncs = cnn.Query <TKS_FAS_Entity2Function>(sql, new { Type = "R", EntityId = request.EntityId }, ts).ToList(); ts.Commit(); TKS_FAS_TreeItem root = new TKS_FAS_TreeItem(); var first = funcs.Where(p => p.Id == "-").FirstOrDefault(); root = Trans2TreeItem(first); if (checkedFuncs.Any(p => { return(p.FunctionId == root.id && p.CheckState == "checked"); })) { root.@checked = true; } CreateTree(funcs, ref root, checkedFuncs); response.Data = new List <TKS_FAS_TreeItem>(); response.Data.Add(root); response.IsSuccess = true; response.Message = "加载完毕"; return(response); } catch (Exception ex) { return(this.DealException(response, ex) as ResponseFuncTreeCheckedGet); } } }
TKS_FAS_TreeItem Trans2TreeItem(TKS_FAS_Function func) { TKS_FAS_TreeItem item = new TKS_FAS_TreeItem(); item.id = func.Id; item.text = func.Name; item.state = "open"; item.@checked = false; item.children = new List <TKS_FAS_TreeItem>(); return(item); }
void CreateTree(List <TKS_FAS_Function> data, ref TKS_FAS_TreeItem root) { for (int i = 0; i < data.Count; i++) { var cur = data[i]; if (cur.ParentId == root.id) { var child = Trans2TreeItem(cur); root.children.Add(child); CreateTree(data, ref child); } } }
void CreateTree(List <TKS_FAS_Function> data, ref TKS_FAS_TreeItem root, List <TKS_FAS_Entity2Function> checkedFuncs) { for (int i = 0; i < data.Count; i++) { var cur = data[i]; if (cur.ParentId == root.id) { var child = Trans2TreeItem(cur); if (checkedFuncs.Any(p => { return(p.FunctionId == child.id && p.CheckState == "checked"); })) { child.@checked = true; } root.children.Add(child); CreateTree(data, ref child, checkedFuncs); } } }
public ResponseFuncTreeGet FuncTreeGet(RequestFuncTreeGet request) { ResponseFuncTreeGet response = new ResponseFuncTreeGet(); using (cnn = GetConnection()) { try { string sql = @"WITH CTE(id, name, img, PARENTID,seq) AS (SELECT id,name,img, PARENTID,seq FROM tks_fas_function WHERE id = @Id UNION ALL SELECT B.id,B.name,B.img,B.PARENTID,B.Seq FROM tks_fas_function B INNER JOIN CTE ON B.PARENTID = CTE.id) SELECT * FROM CTE order by seq"; var funcs = cnn.Query <TKS_FAS_Function>(sql, new { Id = "-" }); TKS_FAS_TreeItem root = new TKS_FAS_TreeItem(); var first = funcs.Where(p => p.Id == "-").FirstOrDefault(); root = Trans2TreeItem(first); CreateTree(funcs.ToList(), ref root); response.Data = new List <TKS_FAS_TreeItem>(); response.Data.Add(root); response.IsSuccess = true; response.Message = "加载完毕"; return(response); } catch (Exception ex) { return(this.DealException(response, ex) as ResponseFuncTreeGet); } } }