private List <GroupTreeModel> AddNodeToParentNode(List <GroupTreeModel> groupList, DataRow row, out bool doAdded) { doAdded = false; GroupTreeModel groupNode = Common.DataToClass <GroupTreeModel>(row); foreach (GroupTreeModel oneNode in groupList) { if (oneNode.id == groupNode.parentId) { if (oneNode.children == null) { oneNode.children = new List <GroupTreeModel>(); } oneNode.children.Add(groupNode); doAdded = true; break; } else { if (oneNode.children != null) { foreach (GroupTreeModel oneSubNode in oneNode.children) { if (oneSubNode.id == groupNode.parentId) { if (oneSubNode.children == null) { oneSubNode.children = new List <GroupTreeModel>(); } oneSubNode.children.Add(groupNode); doAdded = true; break; } else { if (oneSubNode.children != null) { foreach (GroupTreeModel oneSub2Node in oneSubNode.children) { if (oneSub2Node.id == groupNode.parentId) { if (oneSub2Node.children == null) { oneSub2Node.children = new List <GroupTreeModel>(); } oneSub2Node.children.Add(groupNode); doAdded = true; break; } } } } } } } } return(groupList); }
public JsonResult GetGroupListByUser(int groupID, string userID) { try { using (DBManager db = new DBManager()) { string nameOfProcedure = "CPK.uspGroupListByUser"; List <SqlParameter> paraList = new List <SqlParameter>(); userID = User.Identity.Name; paraList.Add(Common.GetParameter("GroupID", DbType.Int32, Convert.ToInt32(groupID), ParameterDirection.Input)); paraList.Add(Common.GetParameter("UserID", DbType.String, userID, ParameterDirection.Input)); DataSet DbSet = db.GetSelectQuery(paraList, nameOfProcedure); List <GroupTreeModel> groupList = new List <GroupTreeModel>(); DataTable table = DbSet.Tables[0]; for (int i = 0; i < table.Rows.Count; i++) { DataRow row = table.Rows[i]; GroupTreeModel groupNode = Common.DataToClass <GroupTreeModel>(row); if (groupNode.parentId == 0) { groupList.Add(groupNode); } } for (int i = 0; i < table.Rows.Count; i++) { bool doAdded = false; DataRow row = table.Rows[i]; GroupTreeModel groupNode = Common.DataToClass <GroupTreeModel>(row); if (groupNode.parentId != 0) { groupList = AddNodeToParentNode(groupList, row, out doAdded); if (doAdded) { table.Rows.Remove(row); i--; } } } JsonResult jResult = Json(groupList, JsonRequestBehavior.AllowGet); return(jResult); } } catch (Exception ex) { JsonError e = new JsonError(ex.Message); return(Json(e, JsonRequestBehavior.AllowGet)); } }