这篇以用户角色为例,来实现CRUD。效果如下:
这里要用到角色表,角色权限表等。看Model SMROLETB,如下:
/* ============================================================================== * 功能描述:Rose * 公司名称: * 创 建 者:Zouqj * 创建日期:2014-3-18 9:22:29 * ==============================================================================*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel.DataAnnotations; namespace YKT.Model { [MetadataType(typeof(SMROLETBMetadata))] //这里是进行映射的 public partial class SMROLETB { #region 自定义属性,即由数据实体扩展的实体 [Display(Name = "人员")] [ScaffoldColumn(false)] public string SysPersonId { get; set; } [ScaffoldColumn(false)] [Display(Name = "人员")] public string SysPersonIdOld { get; set; } [ScaffoldColumn(false)] [Display(Name = "创建者")] public string CreateUserName { get; set; } [ScaffoldColumn(false)] [Display(Name = "修改者")] public string UpdateUserName { get; set; } [ScaffoldColumn(false)] [Display(Name = "状态")] public string StatusName { get; set; } #endregion } public class SMROLETBMetadata { [ScaffoldColumn(false)] [Display(Name = "主键", Order = 1)] public int ROLE_ID { get; set; } [ScaffoldColumn(true)] [Display(Name = "角色名称", Order = 5)] [StringLength(20, ErrorMessage = "长度不可超过20")] [Required(ErrorMessage = "不能为空")] public string ROLE_NAME { get; set; } [ScaffoldColumn(true)] [Display(Name = "创建时间", Order = 4)] [DataType(DataType.DateTime, ErrorMessage = "时间格式不正确")] public DateTime? CREATION_TIME { get; set; } [ScaffoldColumn(false)] [Display(Name = "创建人", Order = 7)] public int CREATION_USER { get; set; } [ScaffoldColumn(true)] [Display(Name = "说明", Order = 7)] [StringLength(100, ErrorMessage = "长度不可超过100")] public string REMARK { get; set; } [ScaffoldColumn(true)] [Display(Name = "角色状态", Order = 7)] [StringLength(2, ErrorMessage = "长度不可超过200")] [Required(ErrorMessage = "不能为空")] public string STATUS { get; set; } } public class RoleView : SMROLETB { public List<string> UserNames { get; set; } } }控制器SysRoleController:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using YKT.Model; using YKT.BLL; using YKT.IBLL; using YKT.Common; namespace YKT.Controllers { public class SysRoleController : BaseController { #region 初始化 string ClassName = "SysRole"; //类名 ISysRoleService _roleService; public SysRoleController() { if (_roleService == null) { _roleService = new SysRoleService(); } } ValidationErrors validationErrors = new ValidationErrors(); OMOPERATIONLOGTB OperLog = new OMOPERATIONLOGTB(); #endregion #region 查询 /// <summary> /// 列表 /// </summary> /// <returns></returns> //[SupportFilter] public ActionResult Index(string view) { return View(); } /// <summary> /// 异步加载数据 /// </summary> /// <param name="page">页码</param> /// <param name="rows">每页显示的行数</param> /// <param name="order">排序字段</param> /// <param name="sort">升序asc(默认)还是降序desc</param> /// <param name="search">查询条件</param> /// <returns></returns> [HttpPost] //[SupportFilter] public JsonResult GetData(string id, int page, int rows, string order, string sort, string search) { int total = 0; var queryData = _roleService.GetByParam(id, page, rows, order, sort, search, ref total); var data = queryData.ToList().Select(m => new { ROLE_ID = m.ROLE_ID, ROLE_NAME = m.ROLE_NAME, CREATION_TIME = m.CREATION_TIME, REMARK = m.REMARK, STATUS = m.StatusName }); //构造成Json的格式传递 var result = new { total = total, rows = data }; return Json(result, JsonRequestBehavior.AllowGet); } #endregion #region 分配权限 /// <summary> /// 首次设置SysMenu /// </summary> /// <param name="id">主键</param> /// <returns></returns> //[SupportFilter] public ActionResult SetSysMenu(string id) { var entity = _roleService.GetById(int.Parse(id)); ViewData["myname"] = entity.ROLE_NAME; ViewData["myid"] = id; return View(entity); } /// <summary> /// 分配权限 /// </summary> /// <param name="collection"></param> /// <returns></returns> [HttpPost] //[SupportFilter] public ActionResult Save(FormCollection collection) { string returnValue = string.Empty; string[] ids = collection["ids"].GetString().Split(','); int id = collection["id"].GetInt(); int userId = GetCurrentAccount().USER_ID; OperLog = new OMOPERATIONLOGTB { OPERATION_TYPE = "U", FUNC_CODE = "900009", USER_ID = userId, CLASSNAME = ClassName + ": Save" }; try { if (_roleService.SaveCollection(ref validationErrors, ids, id)) { OperLog.REMARK = "信息的Id为" + string.Join(",", ids) + Suggestion.InsertSucceed; LogClassService.WriteServiceLog(OperLog); return Json("OK"); } else { if (validationErrors != null && validationErrors.Count > 0) { validationErrors.All(a => { returnValue += a.ErrorMessage; return true; }); } OperLog.REMARK = "信息的Id为" + string.Join(",", ids) + Suggestion.InsertFail; LogClassService.WriteServiceLog(OperLog); } } catch (Exception ex) { ExceptionsHander.WriteExceptions(ex); } return Json(returnValue); } #endregion #region 增 /// <summary> /// 首次创建 /// </summary> /// <returns></returns> //[SupportFilter] public ActionResult Create(string id) { return View(); } /// <summary> /// 创建 /// </summary> /// <param name="entity"></param> /// <returns></returns> [HttpPost] //[SupportFilter] public ActionResult Create(SMROLETB entity) { if (entity != null && ModelState.IsValid) { if (IsOracle) // 如果使用oralce数据库 +此句 { entity.ROLE_ID = (int)GetProblemXH("SMROLETB_SEQ"); } entity.CREATION_TIME = DateTime.Now; entity.CREATION_USER = GetCurrentAccount().USER_ID; string returnValue = string.Empty; OperLog = new OMOPERATIONLOGTB { OPERATION_TYPE = "N", FUNC_CODE = "010701", USER_ID = GetCurrentAccount().USER_ID, CLASSNAME = ClassName + ": Create" }; if (_roleService.Create(ref validationErrors, entity)) { OperLog.REMARK = "角色:" + entity.ROLE_NAME + Suggestion.InsertSucceed; LogClassService.WriteServiceLog(OperLog);//写入日志 return Json(Suggestion.InsertSucceed); } else { if (validationErrors != null && validationErrors.Count > 0) { validationErrors.All(a => { returnValue += a.ErrorMessage; return true; }); } OperLog.REMARK = "角色:" + entity.ROLE_NAME + Suggestion.InsertFail; LogClassService.WriteServiceLog(OperLog);//写入日志 return Json(Suggestion.InsertFail + returnValue); //提示插入失败 } } return Json(Suggestion.InsertFail + ",请核对输入的数据的格式"); //提示输入的数据的格式不对 } #endregion #region 删 /// <summary> /// 删除 /// </summary> /// <param name="collection"></param> /// <returns></returns> [HttpPost] //[SupportFilter] public ActionResult Delete(FormCollection collection) { string returnValue = string.Empty; List<int> lists = collection["query"].GetString().ToIntList(); int[] deleteId = lists.ToArray(); if (deleteId != null && deleteId.Length > 0) { OperLog = new OMOPERATIONLOGTB { OPERATION_TYPE = "D", FUNC_CODE = "010701", USER_ID = Convert.ToInt32(GetCurrentAccount().USER_ID), CLASSNAME = ClassName + ": Delete" }; if (deleteId.Length == 1) { if (_roleService.Delete(ref validationErrors, deleteId[0])) { OperLog.REMARK = "角色Id:" + deleteId[0] + Suggestion.DeleteSucceed; LogClassService.WriteServiceLog(OperLog);//写入日志 return Json("OK"); } else { OperLog.REMARK = "角色Id:" + deleteId[0] + Suggestion.DeleteSucceed; } LogClassService.WriteServiceLog(OperLog);//写入日志 } #region 批量删除 //else if (_roleService.DeleteCollection(ref validationErrors, deleteId)) //{ // OperLog.REMARK ="信息的Id为" + string.Join(",", deleteId)+ Suggestion.DeleteSucceed; // LogClassService.WriteServiceLog(OperLog);//写入日志 // return Json("OK"); //} //else //{ // if (validationErrors != null && validationErrors.Count > 0) // { // validationErrors.All(a => // { // returnValue += a.ErrorMessage; // return true; // }); // } // OperLog.REMARK = "信息的Id为" + string.Join(",", deleteId) + Suggestion.DeleteFail; // LogClassService.WriteServiceLog(OperLog);//删除失败 写入日志 //} #endregion } return Json(returnValue); } #endregion #region 改 /// <summary> /// 首次编辑 /// </summary> /// <param name="id">主键</param> /// <returns></returns> //[SupportFilter] public ActionResult Edit(int id) { SMROLETB item = _roleService.GetById(id); return View(item); } /// <summary> /// 提交编辑信息 /// </summary> /// <param name="id">主键</param> /// <param name="collection">客户端传回的集合</param> /// <returns></returns> [HttpPost] //[SupportFilter] public ActionResult Edit(int id, SMROLETB entity) { if (entity != null && ModelState.IsValid) { //数据校验 entity.UPDATE_TIME = DateTime.Now; entity.UPDATE_USER = GetCurrentAccount().USER_ID; string returnValue = string.Empty; OperLog = new OMOPERATIONLOGTB { OPERATION_TYPE = "U", FUNC_CODE = "010701", USER_ID = Convert.ToInt32(GetCurrentAccount().USER_ID), CLASSNAME = ClassName + ": Edit" }; if (_roleService.Edit(ref validationErrors, entity)) { OperLog.REMARK = "角色:" + entity.ROLE_NAME + Suggestion.UpdateSucceed; LogClassService.WriteServiceLog(OperLog);//写入日志 return Json(Suggestion.UpdateSucceed); //提示更新成功 } else { if (validationErrors != null && validationErrors.Count > 0) { validationErrors.All(a => { returnValue += a.ErrorMessage; return true; }); } OperLog.REMARK = "角色:" + entity.ROLE_NAME + Suggestion.UpdateFail + returnValue; return Json(Suggestion.UpdateFail + returnValue); //提示更新失败 } } return Json(Suggestion.UpdateFail + "请核对输入的数据的格式"); //提示输入的数据的格式不对 } #endregion #region 详细 /// <summary> /// 查看详细 /// </summary> /// <param name="id"></param> /// <returns></returns> //[SupportFilter] public JsonResult Details(string id) { if (string.IsNullOrWhiteSpace(id)) { return null; } var item = _roleService.GetViewById(int.Parse(id)); foreach (var s in item.UserNames) { item.SysPersonId += s + ","; } string usernames = string.IsNullOrWhiteSpace(item.SysPersonId) ? string.Empty : item.SysPersonId.TrimEnd(','); item.SysPersonId = usernames; return Json(item, JsonRequestBehavior.AllowGet); } #endregion } }
/* ============================================================================== * 功能描述:ISysRoleService * 公司名称: 雄帝 * 创 建 者:Zouqj * 创建日期:2014-3-18 10:10:02 * ==============================================================================*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using YKT.Model; namespace YKT.IBLL { /// <summary> /// 角色 接口 /// </summary> public interface ISysRoleService { /// <summary> /// 查询的数据 /// </summary> /// <param name="id">额外的参数</param> /// <param name="page">页码</param> /// <param name="rows">每页显示的行数</param> /// <param name="order">排序字段</param> /// <param name="sort">升序asc(默认)还是降序desc</param> /// <param name="search">查询条件</param> /// <param name="total">结果集的总数</param> /// <returns>结果集</returns> IQueryable<SMROLETB> GetByParam(string id, int page, int rows, string order, string sort, string search, ref int total); /// <summary> /// 获取所有 /// </summary> /// <returns></returns> List<SMROLETB> GetAll(); /// <summary> /// 获取在该表中出现的所有外键实体 /// </summary> /// <param name="id"></param> /// <returns></returns> List<SMUSERTB> GetRefSysPerson(); /// <summary> /// 根据主键,查看详细信息 /// </summary> /// <param name="id">根据主键</param> /// <returns></returns> SMROLETB GetById(int id); /// <summary> /// 通过主键id,获取角色---查看详细,首次编辑 /// </summary> /// <param name="id">主键</param> /// <returns>角色</returns> RoleView GetViewById(int id); /// <summary> /// 创建一个对象 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="entity">一个对象</param> /// <returns></returns> bool Create(ref Common.ValidationErrors validationErrors, SMROLETB entity); /// <summary> /// 创建对象集合 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="entitys">对象集合</param> /// <returns></returns> bool CreateCollection(ref Common.ValidationErrors validationErrors, IQueryable<SMROLETB> entitys); /// <summary> /// 删除一个对象 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="id">一条数据的主键</param> /// <returns></returns> bool Delete(ref Common.ValidationErrors validationErrors, int id); /// <summary> /// 删除对象集合 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="deleteCollection">主键的集合</param> /// <returns></returns> bool DeleteCollection(ref Common.ValidationErrors validationErrors, int[] deleteCollection); /// <summary> /// 编辑一个对象 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="entity">一个对象</param> /// <returns></returns> bool Edit(ref Common.ValidationErrors validationErrors, SMROLETB entity); /// <summary> /// 创建对象集合 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="entitys">对象集合</param> /// <returns></returns> bool EditCollection(ref Common.ValidationErrors validationErrors, IQueryable<SMROLETB> entitys); /// <summary> /// 保存对象集合 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="deleteCollection">主键的集合</param> /// <returns></returns> bool SaveCollection(ref Common.ValidationErrors validationErrors, string[] saveCollection, int id); } }
/* ============================================================================== * 功能描述:SysRoleService * 公司名称: 雄帝 * 创 建 者:Zouqj * 创建日期:2014-3-18 10:14:29 * ==============================================================================*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using YKT.IBLL; using YKT.Model; using YKT.DAL; using YKT.Common; using System.Transactions; using YKT.Common.Functions; namespace YKT.BLL { /// <summary> /// 角色 /// </summary> public class SysRoleService : ISysRoleService, IDisposable { #region 初始化 /// <summary> /// 私有的数据访问上下文 /// </summary> protected YKTEntities db; /// <summary> /// 角色的数据库访问对象 /// </summary> SysRoleRepository repository = new SysRoleRepository(); /// <summary> /// 构造函数,默认加载数据访问上下文 /// </summary> public SysRoleService() { db = new YKTEntities(); } /// <summary> /// 已有数据访问上下文的方法中调用 /// </summary> /// <param name="entities">数据访问上下文</param> public SysRoleService(YKTEntities entities) { db = entities; } #endregion #region 查询 /// <summary> /// 查询的数据 /// </summary> /// <param name="id">额外的参数</param> /// <param name="page">页码</param> /// <param name="rows">每页显示的行数</param> /// <param name="order">排序字段</param> /// <param name="sort">升序asc(默认)还是降序desc</param> /// <param name="search">查询条件</param> /// <param name="total">结果集的总数</param> /// <returns>结果集</returns> public IQueryable<SMROLETB> GetByParam(string id, int page, int rows, string order, string sort, string search, ref int total) { IQueryable<SMROLETB> queryData = repository.DaoChuData(db, order, sort, search); total = queryData.Count(); if (total > 0) { if (page <= 1) { queryData = queryData.Take(rows); } else { queryData = queryData.Skip((page - 1) * rows).Take(rows); } foreach (var item in queryData) { if (item.SMUSERTB != null) { item.SysPersonId = string.Empty; foreach (var it in item.SMUSERTB) { item.SysPersonId += it.USER_NAME + ' '; } item.StatusName = SelectListClass.GetStatusName(item.STATUS); } } } return queryData; } /// <summary> /// 获取在该表一条数据中,出现的所有外键实体 /// </summary> /// <param name="id">主键</param> /// <returns>外键实体集合</returns> public List<SMUSERTB> GetRefSysPerson(int id) { return repository.GetRefSysPerson(db, id).ToList(); } /// <summary> /// 获取在该表中出现的所有外键实体 /// </summary> /// <param name="id">主键</param> /// <returns>外键实体集合</returns> public List<SMUSERTB> GetRefSysPerson() { return repository.GetRefSysPerson(db).ToList(); } #endregion #region 分配权限 public bool SaveCollection(ref ValidationErrors validationErrors, string[] ids, int id) { char split = '^'; var data = ( from f in ids where f.Contains(split) select f.Substring(0, f.IndexOf(split)) ).Union( from f in ids where !string.IsNullOrWhiteSpace(f) && !f.Contains(split) select f); using (TransactionScope transactionScope = new TransactionScope()) { List<int> lists = new List<int>(); if (data != null && data.Count() > 0) { foreach (var v in data) { lists.Add(int.Parse(v)); } } if (db.Connection.State == System.Data.ConnectionState.Closed) { db.Connection.Open(); } //利用编码机制,查询出所有的菜单 var SysMenusIds = db.SMMENUTB.Where(w => lists.Contains(w.ID)).Select(s => s.ID).Distinct(); StringBuilder builder = new StringBuilder(); builder.AppendFormat("DELETE FROM SMMENUROLEFUNCTB WHERE ROLEID = {0};", id);//删除该角色的所有的菜单和操作 foreach (var item in SysMenusIds) {//插入菜单 builder.AppendFormat("INSERT INTO SMMENUROLEFUNCTB(ROLEID,MENUID) VALUES({0},{1});" , id, item); } foreach (var item in ids) {//插入操作 if (item.Contains(split)) { builder.AppendFormat("INSERT INTO SMMENUROLEFUNCTB(ROLEID,MENUID,FUNC_ID) VALUES({0},{1},{2});" , id, item.Substring(0, item.IndexOf(split)), item.Substring(item.IndexOf(split) + 1)); } } db.ExecuteStoreCommand(builder.ToString()); db.SaveChanges(); transactionScope.Complete(); return true; } } #endregion #region 增 /// <summary> /// 创建一个角色 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="db">数据库上下文</param> /// <param name="entity">一个角色</param> /// <returns></returns> public bool Create(ref ValidationErrors validationErrors, YKTEntities db, SMROLETB entity) { int count = 1; foreach (int item in entity.SysPersonId.GetIdSort()) { SMUSERTB sys = new SMUSERTB { USER_ID = item }; db.SMUSERTB.Attach(sys); entity.SMUSERTB.Add(sys); count++; } repository.Create(db, entity); if (count == repository.Save(db)) { return true; } else { validationErrors.Add("创建出错了"); } return false; } /// <summary> /// 创建一个角色 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="entity">一个角色</param> /// <returns></returns> public bool Create(ref ValidationErrors validationErrors, SMROLETB entity) { try { using (TransactionScope transactionScope = new TransactionScope()) { if (Create(ref validationErrors, db, entity)) { transactionScope.Complete(); return true; } else { Transaction.Current.Rollback(); } } return true; } catch (Exception ex) { validationErrors.Add(ex.Message); ExceptionsHander.WriteExceptions(ex); } return false; } /// <summary> /// 创建角色集合 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="entitys">角色集合</param> /// <returns></returns> public bool CreateCollection(ref ValidationErrors validationErrors, IQueryable<SMROLETB> entitys) { try { if (entitys != null) { int flag = 0, count = entitys.Count(); if (count > 0) { using (TransactionScope transactionScope = new TransactionScope()) { foreach (var entity in entitys) { if (Create(ref validationErrors, db, entity)) { flag++; } else { Transaction.Current.Rollback(); return false; } } if (count == flag) { transactionScope.Complete(); return true; } } } } } catch (Exception ex) { validationErrors.Add(ex.Message); ExceptionsHander.WriteExceptions(ex); } return false; } public List<SMROLETB> GetAll() { return repository.GetAll(db).ToList(); } #endregion #region 删 /// <summary> /// 删除一个角色 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="id">一个角色的主键</param> /// <returns></returns> public bool Delete(ref ValidationErrors validationErrors, int id) { try { return repository.Delete(id) == 1; } catch (Exception ex) { validationErrors.Add(ex.Message); ExceptionsHander.WriteExceptions(ex); } return false; } /// <summary> /// 删除角色集合 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="deleteCollection">主键的角色</param> /// <returns></returns> public bool DeleteCollection(ref ValidationErrors validationErrors, int[] deleteCollection) { try { if (deleteCollection != null) { using (TransactionScope transactionScope = new TransactionScope()) { repository.Delete(db, deleteCollection); if (deleteCollection.Length == repository.Save(db)) { transactionScope.Complete(); return true; } else { Transaction.Current.Rollback(); } } } } catch (Exception ex) { validationErrors.Add(ex.Message); ExceptionsHander.WriteExceptions(ex); } return false; } #endregion #region 改 /// <summary> /// 编辑一个角色 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="db">数据上下文</param> /// <param name="entity">一个角色</param> /// <returns>是否编辑成功</returns> public bool Edit(ref ValidationErrors validationErrors, YKTEntities db, SMROLETB entity) { /* * 不操作 原有 现有 * 增加 原没 现有 * 删除 原有 现没 */ if (entity == null) { return false; } int count = 1; SMROLETB editEntity = repository.Edit(db, entity); List<int> addSysPersonId = new List<int>(); List<int> deleteSysPersonId = new List<int>(); DataOfDiffrent.GetDiffrent(entity.SysPersonId.GetIdSort(), entity.SysPersonIdOld.GetIdSort(), ref addSysPersonId, ref deleteSysPersonId); if (addSysPersonId != null && addSysPersonId.Count() > 0) { foreach (var item in addSysPersonId) { SMUSERTB sys = new SMUSERTB { USER_ID = item }; db.SMUSERTB.Attach(sys); editEntity.SMUSERTB.Add(sys); count++; } } if (deleteSysPersonId != null && deleteSysPersonId.Count() > 0) { List<SMUSERTB> listEntity = new List<SMUSERTB>(); foreach (var item in deleteSysPersonId) { SMUSERTB sys = new SMUSERTB { USER_ID = item }; listEntity.Add(sys); db.SMUSERTB.Attach(sys); } foreach (SMUSERTB item in listEntity) { editEntity.SMUSERTB.Remove(item);//查询数据库 count++; } } if (count == repository.Save(db)) { return true; } else { validationErrors.Add("编辑角色出错了"); } return false; } /// <summary> /// 编辑一个角色 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="entity">一个角色</param> /// <returns>是否编辑成功</returns> public bool Edit(ref ValidationErrors validationErrors, SMROLETB entity) { try { using (TransactionScope transactionScope = new TransactionScope()) { if (db.Connection.State == System.Data.ConnectionState.Closed) { db.Connection.Open(); } if (Edit(ref validationErrors, db, entity)) { transactionScope.Complete(); return true; } else { Transaction.Current.Rollback(); } } } catch (Exception ex) { validationErrors.Add(ex.Message); ExceptionsHander.WriteExceptions(ex); } return false; } /// <summary> /// 编辑角色集合 /// </summary> /// <param name="validationErrors">返回的错误信息</param> /// <param name="entitys">角色集合</param> /// <returns></returns> public bool EditCollection(ref ValidationErrors validationErrors, IQueryable<SMROLETB> entitys) { if (entitys != null) { try { int flag = 0, count = entitys.Count(); if (count > 0) { using (TransactionScope transactionScope = new TransactionScope()) { foreach (var entity in entitys) { if (Edit(ref validationErrors, db, entity)) { flag++; } else { Transaction.Current.Rollback(); return false; } } if (count == flag) { transactionScope.Complete(); return true; } } } } catch (Exception ex) { validationErrors.Add(ex.Message); ExceptionsHander.WriteExceptions(ex); } } return false; } #endregion #region 详细 /// <summary> /// 根据主键获取一个角色 /// </summary> /// <param name="id">角色的主键</param> /// <returns>一个角色</returns> public SMROLETB GetById(int id) { return repository.GetById(db, id); } /// <summary> /// 通过主键id,获取角色---查看详细,首次编辑 /// </summary> /// <param name="id">主键</param> /// <returns>角色</returns> public RoleView GetViewById(int id) { return repository.GetViewById(db, id); } #endregion public void Dispose() { } } }
/* ============================================================================== * 功能描述:SysRoleRepository * 公司名称: 雄帝 * 创 建 者:Zouqj * 创建日期:2014-3-18 10:15:39 * ==============================================================================*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using YKT.Model; using YKT.Common; namespace YKT.DAL { /// <summary> /// 角色 /// </summary> public class SysRoleRepository : BaseRepository<SMROLETB>, IDisposable { #region 查询 /// <summary> /// 查询的数据 /// </summary> /// <param name="YKTEntities">数据访问的上下文</param> /// <param name="order">排序字段</param> /// <param name="sort">升序asc(默认)还是降序desc</param> /// <param name="search">查询条件</param> /// <param name="listQuery">额外的参数</param> /// <returns></returns> public IQueryable<SMROLETB> DaoChuData(YKTEntities db, string order, string sort, string search, params object[] listQuery) { string where = string.Empty; int flagWhere = 0; Dictionary<string, string> queryDic = ValueConvert.StringToDictionary(search.GetString()); if (queryDic != null && queryDic.Count > 0) { foreach (var item in queryDic) { if (flagWhere != 0) { where += " and "; } flagWhere++; if (!string.IsNullOrWhiteSpace(item.Key) && !string.IsNullOrWhiteSpace(item.Value) && item.Key.Equals("STATUS")) //需要查询的列名 { where += "it." + item.Key + " = '" + item.Value + "'"; continue; } where += "it." + item.Key + " like '%" + item.Value + "%'"; } } return db.SMROLETB .Where(string.IsNullOrEmpty(where) ? "true" : where) .OrderBy("it." + sort.GetString() + " " + order.GetString()) .AsQueryable(); } /// <summary> /// 获取在该表一条数据中,出现的所有外键实体 /// </summary> /// <param name="id">主键</param> /// <returns>外键实体集合</returns> public IQueryable<SMUSERTB> GetRefSysPerson(int id) { using (YKTEntities db = new YKTEntities()) { return GetRefSysPerson(db, id); } } /// <summary> /// 获取在该表一条数据中,出现的所有外键实体 /// </summary> /// <param name="id">主键</param> /// <returns>外键实体集合</returns> public IQueryable<SMUSERTB> GetRefSysPerson(YKTEntities db, int id) { return from m in db.SMROLETB from f in m.SMUSERTB where m.ROLE_ID == id select f; } /// <summary> /// 获取在该表中出现的所有外键实体 /// </summary> /// <param name="id">主键</param> /// <returns>外键实体集合</returns> public IQueryable<SMUSERTB> GetRefSysPerson(YKTEntities db) { return from m in db.SMROLETB from f in m.SMUSERTB select f; } /// <summary> /// 获取在该表中出现的所有外键实体 /// </summary> /// <param name="id">主键</param> /// <returns>外键实体集合</returns> public IQueryable<SMUSERTB> GetRefSysPerson() { using (YKTEntities db = new YKTEntities()) { return GetRefSysPerson(db); } } #endregion #region 详细 /// <summary> /// 通过主键id,获取角色---查看详细,首次编辑 /// </summary> /// <param name="id">主键</param> /// <returns>角色</returns> public SMROLETB GetById(int id) { using (YKTEntities db = new YKTEntities()) { return GetById(db, id); } } /// <summary> /// 通过主键id,获取角色---查看详细,首次编辑 /// </summary> /// <param name="id">主键</param> /// <returns>角色</returns> public SMROLETB GetById(YKTEntities db, int id) { return db.SMROLETB.SingleOrDefault(s => s.ROLE_ID == id); } /// <summary> /// 通过主键id,获取角色---查看详细,首次编辑 /// </summary> /// <param name="id">主键</param> /// <returns>角色</returns> public RoleView GetViewById(int id) { using (YKTEntities db = new YKTEntities()) { return GetViewById(db, id); } } /// <summary> /// 通过主键id,获取角色---查看详细,首次编辑 /// </summary> /// <param name="id">主键</param> /// <returns>角色</returns> public RoleView GetViewById(YKTEntities db, int id) { var role = (from m in db.SMROLETB where m.ROLE_ID == id select m).ToList().Select(m=> new RoleView { ROLE_ID = m.ROLE_ID, ROLE_NAME = m.ROLE_NAME, CREATION_TIME = m.CREATION_TIME, UPDATE_TIME = m.UPDATE_TIME, CreateUserName = m.SMUSERTB.Where(x => x.USER_ID == m.CREATION_USER).Select(x=>x.USER_NAME).FirstOrDefault(), REMARK = m.REMARK, UpdateUserName = m.SMUSERTB.Where(x => x.USER_ID == m.UPDATE_USER).Select(x=>x.USER_NAME).FirstOrDefault(), STATUS = m.STATUS, StatusName = SelectListClass.GetStatusName(m.STATUS), UserNames = m.SMUSERTB.Select(x=>x.USER_NAME).ToList() }); return role.FirstOrDefault(); } #endregion #region 删 /// <summary> /// 确定删除一个对象,调用Save方法 /// </summary> /// <param name="id">一条数据的主键</param> /// <returns></returns> public int Delete(int id) { using (YKTEntities db = new YKTEntities()) { this.Delete(db, id); return Save(db); } } /// <summary> /// 删除一个角色 /// </summary> /// <param name="db">实体数据</param> /// <param name="id">一条角色的主键</param> public void Delete(YKTEntities db, int id) { SMROLETB deleteItem = GetById(db, id); if (deleteItem != null) { db.SMROLETB.DeleteObject(deleteItem); } } /// <summary> /// 删除对象集合 /// </summary> /// <param name="db">实体数据</param> /// <param name="deleteCollection">主键的集合</param> public void Delete(YKTEntities db, int[] deleteCollection) { //数据库设置级联关系,自动删除子表的内容 IQueryable<SMROLETB> collection = from f in db.SMROLETB where deleteCollection.Any(x => x == f.ROLE_ID) select f; foreach (var deleteItem in collection) { db.SMROLETB.DeleteObject(deleteItem); } } #endregion public void Dispose() { } } }
/*Company:EMPEROR*/ /*Author:Zouqj*/ /*Date:2014-02-19*/ using System.Linq; using System.Data; using System; using System.Data.Common; using System.Data.Objects; using YKT.Model; using System.Linq.Expressions; namespace YKT.DAL { /// <summary> /// 实现对数据库的操作(增删改查)的基类 /// </summary> /// <typeparam name="T">定义泛型,约束其是一个类</typeparam> public class BaseRepository<T> where T : class { public string Start_Time { get { return "Start_Time"; } } public string End_Time { get { return "End_Time"; } } public string Start_Int { get { return "Start_Int"; } } public string End_Int { get { return "End_Int"; } } public string End_String { get { return "End_String"; } } public string DDL_String { get { return "DDL_String"; } } /// <summary> /// 获取所有 /// </summary> /// <returns>集合</returns> public virtual IQueryable<T> GetAll() { using (YKTEntities db = new YKTEntities()) { return GetAll(db); } } /// <summary> /// 获取所有 /// </summary> /// <returns>集合</returns> public virtual IQueryable<T> GetAll(YKTEntities db) { return db.CreateObjectSet<T>().AsQueryable(); } /// <summary> /// 创建 /// </summary> /// <param name="db">实体数据</param> /// <param name="entity">将要创建的对象</param> public virtual void Create(YKTEntities db, T entity) { if (entity != null) { //EF4.0的写法 添加实体 db.CreateObjectSet<T>().AddObject(entity); } } /// <summary> /// 创建 /// </summary> /// <param name="entity">一个对象</param> /// <returns></returns> public virtual int Create(T entity) { using (YKTEntities db = new YKTEntities()) { Create(db, entity); return this.Save(db); } } /// <summary> /// 创建对象集合 /// </summary> /// <param name="db">实体数据</param> /// <param name="entitys">对象集合</param> public virtual void Create(YKTEntities db, IQueryable<T> entitys) { foreach (var entity in entitys) { this.Create(db, entity); } } /// <summary> /// 编辑一个对象 /// </summary> /// <param name="db">实体数据</param> /// <param name="entity">将要编辑的一个对象</param> public virtual T Edit(YKTEntities db, T entity) { db.CreateObjectSet<T>().Attach(entity); db.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified); return entity; } /// <summary> /// 编辑对象集合 /// </summary> /// <param name="db">实体数据</param> /// <param name="entitys">对象集合</param> public virtual void Edit(YKTEntities db, IQueryable<T> entitys) { foreach (T entity in entitys) { this.Edit(db, entity); } } /// <summary> /// 提交保存,持久化到数据库 /// </summary> /// <param name="db">实体数据</param> /// <returns>受影响行数</returns> public int Save(YKTEntities db) { return db.SaveChanges(); } } }视图层:
Index.cshtml:
@using YKT.BLL @using YKT.Common; @model YKT.Model.SMROLETB @{ ViewBag.Title = "角色管理"; Layout = "~/Views/Shared/Base.cshtml"; } <script type="text/javascript" language="javascript"> //回车触发查询 $(function () { document.onkeydown = function (e) { var ev = document.all ? window.event : e; if (ev.keyCode == 13) { flexiQuery(); } } }); $(function () { var flag = window.location.search; var isSingleSelect = true; if (flag == "?view=1") { isSingleSelect = false; } var searchH = $("#divQuery").height(); var h = document.documentElement.clientHeight - searchH - 26; $('#flexigridData').datagrid({ title: '角色', //列表的标题 iconCls: 'icon-site', // fit: true, //列表自动适应宽度 width: 'auto', singleSelect: isSingleSelect, //是否单选行 selectOnCheck: true, //选中行时复选框选中 checkOnSelect: true, //选中复选框时选中行 height: h, nowrap: false, //True 就会把数据显示在一行里。 striped: true, //True 就把行条纹化。(即奇偶行使用不同背景色) collapsible: true, //可调节列宽 remoteSort: true, //定义是否从服务器给数据排序。 url: 'SysRole/GetData', //获取数据的url sortName: 'ROLE_ID', //定义可以排序的列 sortOrder: 'desc', //定义列的排序顺序,只能用 'asc' 或 'desc' idField: 'ROLE_ID', //标识字段 onDblClickRow: function (rowIndex, rowData) { getDetail(rowData["ROLE_ID"]); } //双击显示详情 , toolbar: [ { text: '分配权限', iconCls: 'icon-search', handler: function () { flexiSetSysMenu(); } }], columns: [[ { field: 'ck', checkbox: true },//复选框 { field: 'ROLE_NAME', title: '@Html.LabelFor(model => model.ROLE_NAME)', width: 125, sortable: true } , { field: 'STATUS', title: '@Html.LabelFor(model => model.STATUS)', width: 80, sortable: true } , { field: 'CREATION_TIME', title: '@Html.LabelFor(model => model.CREATION_TIME)', width: 130, sortable: true , formatter: function (value, rec) { if (value) { return dateTimeConvert(value); } } } , { field: 'REMARK', title: '@Html.LabelFor(model => model.REMARK)', sortable: true } ]], pagination: true, //在 datagrid 的底部显示分页栏。 rownumbers: true //显示行号的列 }); //如果列表页出现在弹出框中,则只显示查询和选择按钮 var parent = window.dialogArguments; //获取父页面 //异步获取按钮 if (parent == "undefined" || parent == null) { //首先获取iframe标签的id值 var iframeid = window.parent.$('#tabs').tabs('getSelected').find('iframe').attr("id"); //然后关闭AJAX相应的缓存 $.ajaxSetup({ cache: false }); //获取按钮值 $.getJSON("../Home/GetToolbar", { id: iframeid }, function (data) { if (data == null) { return; } $('#flexigridData').datagrid("addToolbarItem", data); }); } else { //添加选择按钮 $('#flexigridData').datagrid("addToolbarItem", [{ "text": "选择", "iconCls": "icon-ok", handler: function () { flexiSelect(); } }]); } }); //“查询”按钮,弹出查询框 function flexiQuery() { //将查询条件按照分隔符拼接成字符串 var search = ""; $('#divQuery').find(":text,:selected,select,textarea,:hidden,:checked,:password").each(function () { search = search + this.id + "&" + this.value + "^"; }); //执行查询 $('#flexigridData').datagrid('reload', { search: search }); } function resetData() { $("#ROLE_NAME").val(""); $('#STATUS')[0].selectedIndex = 0; } //“选择”按钮,在其他(与此页面有关联)的页面中,此页面以弹出框的形式出现,选择页面中的数据 function flexiSelect() { var rows = $('#flexigridData').datagrid('getSelections'); if (rows.length == 0) { $.messager.alert('操作提示', '请选择数据!', 'warning'); return false; } var arr = []; for (var i = 0; i < rows.length; i++) { arr.push(rows[i].ROLE_ID); } arr.push("^"); for (var f = 0; f < rows.length; f++) { arr.push(rows[f].ROLE_NAME); } //主键列和显示列之间用 ^ 分割 每一项用 , 分割 if (arr.length > 0) {//一条数据和多于一条 returnParent(arr.join("&")); //每一项用 & 分割 } } //导航到查看详细的按钮 function getView() { //首先取出来用户选择的数据的ID var rows = $("#flexigridData").datagrid("getSelections"); //首先取出来值判断用户只能选择一个 if (rows.length != 1) { $.messager.alert("友情提示", "每次只能修改/浏览一条,你已经选择了<font color='red' size='6'>" + rows.length + "</font>条", "error"); return; } var id = rows[0].ROLE_ID; getDetail(id); }; function getDetail(id) { //处理浏览的信息,弹出浏览狂,然后显示浏览信息的相信信息 $("#DivBrowerRole").dialog('open').dialog('setTitle', '角色浏览信息'); //构造参数发送给后台 $.get("/SysRole/Details", { "id": id }, function (roleInfo) { $("#v_Name").text(roleInfo.ROLE_NAME); $("#v_CreateTime").text(dateTimeConvert(roleInfo.CREATION_TIME)); $("#v_CreateUser").text(roleInfo.CreateUserName); $("#v_UpdateTime").text(dateTimeConvert(roleInfo.UPDATE_TIME)); $("#v_UpdateUser").text(roleInfo.UpdateUserName); $("#v_Remark").text(roleInfo.REMARK) $("#v_UserNames").text(roleInfo.SysPersonId); $("#v_Status").text(roleInfo.StatusName); }); } //导航到创建的按钮 function flexiCreate() { //window.location.href = "../SysRole/Create"; showMyWindow("#myWin", "创建角色", "../SysRole/Create", 680, 316); return false; } //导航到修改的按钮 function flexiModify() { var arr = $('#flexigridData').datagrid('getSelections'); if (arr.length == 1) { showMyWindow("#myWin", "修改角色", "../SysRole/Edit/" + arr[0].ROLE_ID, 680, 316); } else { $.messager.alert('操作提示', '请选择一条数据!', 'warning'); } return false; }; //删除的按钮 function flexiDelete() { var rows = $('#flexigridData').datagrid('getSelections'); if (rows.length == 0) { $.messager.alert('操作提示', '请选择数据!', 'warning'); return false; } var arr = []; for (var i = 0; i < rows.length; i++) { arr.push(rows[i].ROLE_ID); } $.messager.confirm('操作提示', "确认删除这 " + arr.length + " 项吗?", function (r) { if (r) { $.post("../SysRole/Delete", { query: arr.join(",") }, function (res) { if (res == "OK") { //移除删除的数据 $("#flexigridData").datagrid("reload"); $("#flexigridData").datagrid("clearSelections"); $.messager.alert('操作提示', '删除成功!', 'info'); } else { if (res == "") { $.messager.alert('操作提示', '删除失败!请查看该数据与其他模块下的信息的关联,或联系管理员。', 'info'); } else { $.messager.alert('操作提示', res, 'info'); } } }); } }); }; //分配权限 flexiSetSysMenu = function () { var arr = $('#flexigridData').datagrid('getSelections'); if (arr.length == 1) { window.location.href = "../SysRole/SetSysMenu/" + arr[0].ROLE_ID; } else { $.messager.alert('操作提示', '请选择一条数据!', 'warning'); } return false; }; </script> <div id="content" region="center" fit="true"> <div id="divQuery" style="padding: 5px; font-size: 12px;" title="查询列表" class="easyui-toolbar"> <span>@Html.LabelFor(model => model.ROLE_NAME)</span><input type='text' id='ROLE_NAME' class="easyui-validatebox" /> <span>@Html.LabelFor(model => model.STATUS)</span> <span>@Html.DropDownListFor(model => model.STATUS, SelectListClass.GetStatus(true), false)</span> <a href="javascript:flexiQuery()" class="easyui-linkbutton" data-options="iconCls:'icon-search'">查询</a> <a href="javascript:resetData()" class="easyui-linkbutton" data-options="iconCls:'icon-redo'"> 重置</a> </div> <table id="flexigridData"> </table> </div> <!------------------------弹出角色浏览信息的弹出层----------------------------------> <div id="DivBrowerRole" class="easyui-dialog" style="width: 700px; height:260px; padding: 10px 20px" closed="true" resizable="true" modal="true" buttons="#dlg-buttons"> <fieldset> <legend>角色浏览信息</legend> <table id="tblBrower" class="usertableborder2" cellspacing="1" cellpadding="3" width="98%" align="center" border="0"> <tr class="usertablerow1"> <td class="_width"> 名称: </td> <td class="width4"> <span id="v_Name"></span> </td> <td class="width0"> 创建时间: </td> <td class="time"> <span id="v_CreateTime"></span> </td> <td class="_width"> 状态: </td> <td class="width1"> <span id="v_Status"></span> </td> </tr> <tr class="usertablerow2"> <td> 创建人: </td> <td> <span id="v_CreateUser"></span> </td> <td> 编辑时间: </td> <td> <span id="v_UpdateTime"></span> </td> <td> 编辑人: </td> <td> <span id="v_UpdateUser"></span> </td> </tr> <tr class="usertablerow1"> <td nowrap="noWrap"> 描述: </td> <td colspan="5" class="remark"> <div id="v_Remark" style="word-break: break-all"> </div> </td> </tr> <tr class="usertablerow2"> <td> 人员: </td> <td colspan="5" class="remark"> <div id="v_UserNames" style="word-break: break-all"> </div> </td> </tr> </table> </fieldset> </div> <!-------------------------创建和修改层----------------------------------> <div id="myWin"></div>
@using YKT.BLL; @using YKT.Common.HtmlHelpers; @using YKT.Common; @model YKT.Model.SMROLETB @{ ViewBag.SubTitle = "角色 创建"; Layout = "~/Views/Shared/Save.cshtml"; } @Html.ValidationSummary(true, "角色创建不成功. 请修改后重试") @using (Html.BeginForm((string)ViewBag.FormAction, "SysRole",FormMethod.Post,new {id = "form1" })) { <table id="tbCreate" class="usertableborder" align="center"> <tr class="usertablerow1"> <td class="_width"> @Html.LabelFor(model => model.ROLE_NAME):</td> <td> <input type="text" name="ROLE_NAME" class="easyui-validatebox" required="true" missingMessage="不能为空" validType="length[0,20]" invalidMessage="长度不可超过20"/> </td> <td class="_width"> @Html.LabelFor(model => model.STATUS):</td> <td class="width2"> @Html.RadioButtonListFor(model => model.STATUS, SelectListClass.GetStatus(false), true) </td> </tr> <tr> <td> @Html.LabelFor(model => model.REMARK):</td> <td colspan="2" style="word-break: break-all; overflow-x:hidden;" class="remark"> <textarea cols="30" name="REMARK" rows="3" class="easyui-validatebox" validType="length[0,100]" invalidMessage="长度不可超过100"> </textarea> </td> <td></td> </tr> <tr class="usertablerow1"> <td> <a class="anUnderLine" onclick="showModalMany('SysPersonId','../../SysUser?view=1');"> @Html.LabelFor(model => model.SysPersonId)</a></td> <td colspan="3"> <div class="selectList"> <ul id="checkSysPersonId"> @if (Model != null && !string.IsNullOrWhiteSpace(Model.SysPersonId)) { foreach (var item8 in Model.SysPersonId.Split('^')) { string[] it = item8.Split('&'); if (it != null && it.Length == 2 && !string.IsNullOrWhiteSpace(it[0]) && !string.IsNullOrWhiteSpace(it[1])) { <li id="@item8"> <img alt="删除" title="点击删除" onclick="deleteTable('@item8 ','SysPersonId');" src="../../../Images/deleteimge.png" /> @it[1]</li> } } } </ul> @Html.HiddenFor(model => model.SysPersonId) </div> </td> </tr> <tr class="usertablerow2"><td colspan="4" style="text-align:center; height:30px;"> <a href='#' onclick='$("form").submit()' class="easyui-linkbutton" data-options="iconCls:'icon-add'">添加</a> <a href='#' onclick="javascript:resetData()" class="easyui-linkbutton" data-options="iconCls:'icon-redo'"> 重置</a> <a href='#' onclick="javascript:formClose();" class="easyui-linkbutton" data-options="iconCls:'icon-undo'"> 取消</a> </td></tr> </table> }
@model YKT.Model.SMROLETB @using YKT.BLL; @using YKT.Common.HtmlHelpers; @using YKT.Common; @{ ViewBag.SubTitle = "修改 角色"; Layout = "~/Views/Shared/Save.cshtml"; } @using (Html.BeginForm((string)ViewBag.FormAction, "SysRole",FormMethod.Post,new {id = "form1" })) { @Html.HiddenFor(model => model.ROLE_ID) @Html.HiddenFor(model => model.CREATION_TIME)@Html.HiddenFor(model => model.CREATION_USER) <table id="tbEdit" class="usertableborder" align="center"> <tr class="usertablerow1"> <td class="_width"> @Html.LabelFor(model => model.ROLE_NAME): </td> <td> <input type="text" name="ROLE_NAME" value='@Html.ValueFor(model => model.ROLE_NAME)' class="easyui-validatebox" required="true" missingMessage="不能为空" validType="length[0,20]" invalidMessage="长度不可超过20"/> </td> <td class="_width"> @Html.LabelFor(model => model.STATUS): </td> <td class="width2"> @Html.RadioButtonListFor(model => model.STATUS, SelectListClass.GetStatus(false), true) </td> </tr> <tr> <td> @Html.LabelFor(model => model.REMARK): </td> <td colspan="2" style="word-break: break-all;overflow-x:hidden;" class="remark"> <textarea rows="3" cols="30" name="REMARK" class="easyui-validatebox" validType="length[0,100]" invalidMessage="长度不可超过100">@Html.ValueFor(model => model.REMARK)</textarea> </td> <td></td> </tr> <tr class="usertablerow1"> <td> <a class="anUnderLine" onclick="showModalMany('SysPersonId','../../SysUser?view=1');"> @Html.LabelFor(model => model.SysPersonId) </a> </td> <td colspan="3"> <div class="selectList"> @if (Model != null) { string ids8 = string.Empty; <ul id="checkSysPersonId"> @foreach (var item8 in Model.SMUSERTB) { string item81 = string.Empty; item81 += item8.USER_ID + "&" + item8.USER_NAME; if (ids8.Length > 0) { ids8 += "^" + item81; } else { ids8 += item81; } <li id="@item81"> <img alt="删除" title="点击删除" onclick="deleteTable('@item81','SysPersonId');" src="../../../Images/deleteimge.png" /> @item8.USER_NAME</li> } </ul> <input type="hidden" value="@ids8" name="SysPersonIdOld" id="SysPersonIdOld" /> <input type="hidden" value="@ids8" name="SysPersonId" id="SysPersonId" /> } </div> </td> </tr> <tr class="usertablerow2"> <td colspan="4" style="text-align: center; height: 30px;"> <a href='#' onclick='$("form").submit()' class="easyui-linkbutton" data-options="iconCls:'icon-edit'">修改</a> <a href='#' onclick="javascript:resetData()" class="easyui-linkbutton" data-options="iconCls:'icon-redo'"> 重置</a> <a href='#' onclick="javascript:formClose();" class="easyui-linkbutton" data-options="iconCls:'icon-undo'"> 取消</a> </td> </tr> </table> }
@{ ViewBag.Title = "SetSysMenu"; Layout = "~/Views/Shared/Base.cshtml"; } <script type="text/javascript"> $(function () { var h = document.documentElement.clientHeight - 26; $('#flexigridData').treegrid({ title: ' 当前角色是:@ViewData["myname"]', iconCls: 'icon-site', url: '../../SysMenu/GetAllMetadata2/' + $("#SysRoleId").val(), idField: 'ID', treeField: 'NAME', height:h, rownumbers: true, toolbar: [ { text: '保存', iconCls: 'icon-save', handler: function () { return getView(); } }, { text: '全选', iconCls: 'icon-ok', handler: function () { return flexiCreate(); } }, { text: '全不选', iconCls: 'icon-remove', handler: function () { return flexiDelete(); } }, { text: '取消', iconCls: 'icon-undo', handler: function () { return flexiModify(); } }], columns: [[ { field: 'NAME', title: '菜单', width: 205 , formatter: function (value, rec) { if (value) { return '<input id="' + rec.ID + '" type="checkbox">' + (value); } } } , { field: 'isCheck', title: '操作', width: 599, formatter: function (value, rec) { if (value) { var index = value.split(","); //分割符 , 的位置 if (index[0] == null || index[0] == "undefined" || index[0].length < 1) { return; } var content = ""; //需要添加到check中的内容 for (var i = 0; i < index.length; i++) { var view = index[i].split('^'); //显示值 if (view != null) { content += '<input id="' + rec.ID + '^' + view[0] + '" type="checkbox">' + view[1]; } } return content; } } } ]], onLoadSuccess: function (row, data) { if (data) { $.ajaxSetup({ cache: false //关闭AJAX相应的缓存 }); $.getJSON('../../SysMenu/GetAllMetadata23/' + $("#SysRoleId").val(), function (checks) { $.each(checks, function (i, item) { var c = document.getElementById(item); c.checked = true; }); }); } } }); }); //保存 function getView() { var datas = ''; $("input[type='checkbox']").each(function () { if ($(this).is(":checked")) datas += ',' + $(this).attr('id'); }); $.post("../../SysRole/Save", { id: $("#SysRoleId").val(), ids: datas }, function (res) { if (res == "OK") { $.messager.alert('操作提示', '保存成功!', 'info'); } else { if (res == "") { $.messager.alert('操作提示', '保存失败!请联系管理员。', 'info'); } else { $.messager.alert('操作提示', res, 'info'); } } }); return false; } //全选 function flexiCreate() { $("input[type='checkbox']").each(function () { $(this).attr("checked", true); }); return false; } //全不选 function flexiModify() { window.location.href = "../../SysRole"; return false; }; //取消 function flexiDelete() { $("input[type='checkbox']").each(function () { $(this).attr("checked", false); }); return false; }; </script> <table id="flexigridData"> </table> <input type="hidden" id="SysRoleId" value="@ViewData["myid"]" />