1.页面布局
(1)添加控制器(2)在控制器添加视图(3)添加HTML代码(4)引入css样式(5)引入js
2.写视图样式
@{
Layout = null;
}
Index
票 证 下 发
@*下发票数 限制只能输入整数*@ 票证下发 前往票证维护
(10)调用js方法,编写下拉框样式
createSelect(“UserID”, “SelectUser”);
});
3.转到控制器去写递归方法 /// /// 根据用户ID查询出用户的下级员工及自己 /// /// public ActionResult SelectUser() { (1)获取当前用户的id int userID = Convert.ToInt32(Session["UserID"].ToString()); //根据用户id查询出当前用户的信息 S_User dbUser = myModel.S_User.SingleOrDefault(o => o.userID == userID); (2)查询所有下级用户组(linq递归查询),查询与userGroupID相同的GetChildGroup方法里面的superiorUserGroupID 定义childGroups变量,用来存储查询出的数据 List childGroups = GetChildGroup(dbUser.userGroupID).ToList(); (6)查询出所有的用户组id,根据id将用户查询出来(需要调用查询用户组方法) List childGroupIds = childGroups.Select(o => o.userGroupID).ToList(); (7)根据用户表,查询员工 var list = (from tbUser in myModel.S_User join tbUserGroup in myModel.S_UserGroup on tbUser.userGroupID equals tbUserGroup.userGroupID where childGroupIds.Contains(tbUser.userGroupID) select new { id= tbUser.userID, text=tbUser.jobNumber+""+tbUser.userName }).ToList(); (7)添加自己的信息到列表 list.Add(new { id = dbUser.userID, text = dbUser.jobNumber + "" + dbUser.userName, }); (8)根据id进行排序,OrderBy进行排序 list = list.OrderBy(m => m.id).ToList(); (9)返回数据 return Json(list, JsonRequestBehavior.AllowGet); } /// /// 递归查询下级用户 /// /// ///
private IEnumerable<S_UserGroup>GetChildGroup(int superiorUserGroupId)
{
(3)查询二级用户(从S_UserGroup中查询,查询superiorUserGroupID是否与输入的值相同,相同则输出)
var query = (from tbUserGroup in myModel.S_UserGroup
where tbUserGroup.superiorUserGroupID == superiorUserGroupId
select tbUserGroup).ToList();
(4)将query变量里面的方法反复查询
//调用GetChildGroup方法本身,进行多次递归
//利用userGroupID进行查询,查询与它相同的superiorUserGroupID
IEnumerable<S_UserGroup> childGroup = query.ToList()
.SelectMany(m => GetChildGroup(m.userGroupID));
(5)将query和childGroup变量查询出的结果合并在一起
return query.ToList().Concat(childGroup);
}