using System; using System.Collections.Generic; using System.Linq.Expressions; namespace WalkingTec.Mvvm.Core { /// /// GridActionExtension /// public static class GridActionExtensions { #region MakeStandardAction 创建标准动作 /// /// 创建标准动作 /// /// 继承自TopBasePoco的类 /// 继承自ISearcher的类 /// self /// 动作的Controller /// 标准动作类型 /// 弹出窗口的标题,可为空,代表使用默认文字 /// 域名 /// 弹出窗口的宽度 /// 弹出窗口的高度 /// 按钮显示的文字 /// Button的id 默认自动生成 /// whereStr /// 列表动作 /// /// 根据标准动作类型,创建默认属性的标准动作 /// public static GridAction MakeStandardAction(this IBasePagedListVM self , string controllerName , GridActionStandardTypesEnum standardType , string dialogTitle , string areaName = null , int? dialogWidth = null , int? dialogHeight = null , string name = null , string buttonId = null , params Expression>[] whereStr) where T : TopBasePoco where V : ISearcher { var iconcls = string.Empty; var actionName = standardType.ToString(); var gridname = string.Empty; var paraType = GridActionParameterTypesEnum.NoId; var showInRow = false; var hideOnToolBar = false; var showDialog = true; var isexport = false; string msg = null; var ispost = false; string qs = null; switch (standardType) { case GridActionStandardTypesEnum.Create: iconcls = "layui-icon layui-icon-add-1"; gridname = CoreProgram._localizer?["Sys.Create"]; paraType = GridActionParameterTypesEnum.NoId; break; case GridActionStandardTypesEnum.AddRow: iconcls = "layui-icon layui-icon-add-1"; gridname = CoreProgram._localizer?["Sys.Create"]; paraType = GridActionParameterTypesEnum.AddRow; break; case GridActionStandardTypesEnum.Edit: iconcls = "layui-icon layui-icon-edit"; gridname = CoreProgram._localizer?["Sys.Edit"]; paraType = GridActionParameterTypesEnum.SingleId; showInRow = true; hideOnToolBar = true; break; case GridActionStandardTypesEnum.Delete: iconcls = "layui-icon layui-icon-delete"; gridname = CoreProgram._localizer?["Sys.Delete"]; paraType = GridActionParameterTypesEnum.SingleId; showInRow = true; hideOnToolBar = true; break; case GridActionStandardTypesEnum.SimpleDelete: iconcls = "layui-icon layui-icon-delete"; gridname = CoreProgram._localizer?["Sys.Delete"]; paraType = GridActionParameterTypesEnum.SingleIdWithNull; showInRow = true; hideOnToolBar = true; showDialog = false; actionName = "BatchDelete"; qs = "_donotuse_sd=1"; ispost = true; msg = CoreProgram._localizer?["Sys.DeleteConfirm"]; break; case GridActionStandardTypesEnum.RemoveRow: iconcls = "layui-icon layui-icon-delete"; gridname = CoreProgram._localizer?["Sys.Delete"]; paraType = GridActionParameterTypesEnum.RemoveRow; showInRow = true; hideOnToolBar = true; break; case GridActionStandardTypesEnum.Details: iconcls = "layui-icon layui-icon-form"; gridname = CoreProgram._localizer?["Sys.Details"]; paraType = GridActionParameterTypesEnum.SingleId; showInRow = true; hideOnToolBar = true; break; case GridActionStandardTypesEnum.BatchEdit: iconcls = "layui-icon layui-icon-edit"; gridname = CoreProgram._localizer?["Sys.BatchEdit"]; paraType = GridActionParameterTypesEnum.MultiIds; break; case GridActionStandardTypesEnum.BatchDelete: iconcls = "layui-icon layui-icon-delete"; gridname = CoreProgram._localizer?["Sys.BatchDelete"]; paraType = GridActionParameterTypesEnum.MultiIds; break; case GridActionStandardTypesEnum.SimpleBatchDelete: iconcls = "layui-icon layui-icon-delete"; gridname = CoreProgram._localizer?["Sys.BatchDelete"]; paraType = GridActionParameterTypesEnum.MultiIds; showDialog = false; msg = CoreProgram._localizer?["Sys.BatchDeleteConfirm"]; actionName = "BatchDelete"; ispost = true; break; case GridActionStandardTypesEnum.Import: iconcls = "layui-icon layui-icon-templeate-1"; gridname = CoreProgram._localizer?["Sys.Import"]; paraType = GridActionParameterTypesEnum.NoId; break; case GridActionStandardTypesEnum.ExportExcel: iconcls = "layui-icon layui-icon-download-circle"; gridname = CoreProgram._localizer?["Sys.Export"]; paraType = GridActionParameterTypesEnum.MultiIdWithNull; name = CoreProgram._localizer?["Sys.ExportExcel"]; showInRow = false; showDialog = false; hideOnToolBar = false; isexport = true; break; default: break; } if (string.IsNullOrEmpty(dialogTitle)) { dialogTitle = gridname; } var list = new List(); foreach (var item in whereStr) { list.Add(PropertyHelper.GetPropertyName(item)); } return new GridAction { ButtonId = buttonId, Name = (name ?? gridname), DialogTitle = dialogTitle, Area = areaName, ControllerName = controllerName, ActionName = actionName, ParameterType = paraType, IconCls = iconcls, DialogWidth = dialogWidth ?? 800, DialogHeight = dialogHeight, ShowInRow = showInRow, ShowDialog = showDialog, HideOnToolBar = hideOnToolBar, PromptMessage = msg, ForcePost = ispost, QueryString = qs, IsExport = isexport, whereStr = list.ToArray() }; } #endregion #region MakeAction 创建按钮 /// /// 创建标准动作 /// /// 继承自TopBasePoco的类 /// 继承自ISearcher的类 /// self /// 动作的Controller /// actionName /// 动作名,默认为‘新建’ /// 弹出窗口的标题 /// paraType /// 域名 /// 弹出窗口的宽度 /// 弹出窗口的高度 /// Button的id 默认自动生成 /// whereStr /// 列表动作 /// /// 根据标准动作类型,创建默认属性的标准动作 /// public static GridAction MakeAction(this IBasePagedListVM self , string controllerName , string actionName , string name , string dialogTitle , GridActionParameterTypesEnum paraType , string areaName = null , int? dialogWidth = null , int? dialogHeight = null , string buttonId = null , params Expression>[] whereStr) where T : TopBasePoco where V : ISearcher { var iconcls = string.Empty; var list = new List(); foreach (var item in whereStr) { list.Add(PropertyHelper.GetPropertyName(item)); } return new GridAction { ButtonId = buttonId, Name = name, DialogTitle = dialogTitle, Area = areaName, ControllerName = controllerName, ActionName = actionName, ParameterType = paraType, IconCls = iconcls, DialogWidth = dialogWidth ?? 800, DialogHeight = dialogHeight, ShowDialog = true, whereStr = list.ToArray() }; } public static GridAction MakeActionsGroup(this IBasePagedListVM self , string name , List subActions , params Expression>[] whereStr) where T : TopBasePoco where V : ISearcher { var iconcls = string.Empty; var list = new List(); foreach (var item in whereStr) { list.Add(PropertyHelper.GetPropertyName(item)); } return new GridAction { ButtonId = Guid.NewGuid().ToString(), Name = name, DialogTitle = "", Area = "", ControllerName = "", ActionName = "ActionsGroup", ParameterType = GridActionParameterTypesEnum.NoId, IconCls = iconcls, DialogWidth = 0, DialogHeight = 0, ShowDialog = false, whereStr = list.ToArray(), SubActions= subActions }; } #endregion #region MakeStandardExportAction 创建标准导出按钮 /// /// 创建标准导出按钮 /// /// 继承自TopBasePoco的类 /// 继承自ISearcher的类 /// self /// vmGuid /// /// 导出类型 默认null,支持所有导出 /// 参数 /// [Obsolete("Will be removed in future, use MakeStandardAction with GridActionStandardTypesEnum.ExportExcel instead")] public static GridAction MakeStandardExportAction(this IBasePagedListVM self , string gridid = null , bool MustSelect = false , ExportEnum? exportType = null , params KeyValuePair[] param) where T : TopBasePoco where V : ISearcher { exportType = ExportEnum.Excel; var action = new GridAction { Name = CoreProgram._localizer?["Sys.ExportExcel"], DialogTitle = CoreProgram._localizer?["Sys.ExportExcel"], Area = string.Empty, ControllerName = "_Framework", ActionName = "GetExportExcel", ParameterType = GridActionParameterTypesEnum.MultiIdWithNull, IconCls = "layui-icon layui-icon-download-circle", ShowInRow = false, ShowDialog = false, HideOnToolBar = false }; return action; } #endregion #region Set Property /// /// Set the dialog to be maximized /// /// /// /// public static GridAction SetMax(this GridAction self, bool Max = true) { self.Max = Max; return self; } /// /// Set the dialog to be maximized /// /// /// button class. /// Some of the layui defined class to control color: /// layui-btn-primary /// layui-btn-normal /// layui-btn-warm /// layui-btn-danger /// /// public static GridAction SetButtonClass(this GridAction self, string buttonclass) { self.ButtonClass = buttonclass; return self; } /// /// Set the dialog to be maximized /// /// /// /// public static GridAction SetIsDownload(this GridAction self, bool isDownload = true) { self.IsDownload = isDownload; return self; } public static GridAction SetIsExport(this GridAction self, bool isExport= true) { self.IsExport = isExport; return self; } /// /// Set prompt message /// /// /// /// public static GridAction SetPromptMessage(this GridAction self, string msg) { self.PromptMessage = msg; return self; } /// /// 是否在每行都显示 /// /// /// /// public static GridAction SetShowInRow(this GridAction self, bool showInRow = true) { self.ShowInRow = showInRow; return self; } /// /// 是否在工具栏上隐藏按钮 /// /// /// /// public static GridAction SetHideOnToolBar(this GridAction self, bool hideOnToolBar = true) { self.HideOnToolBar = hideOnToolBar; return self; } /// /// 把按钮当作容器,添加按钮的子按钮 /// /// /// 子按钮 /// public static GridAction SetSubActions(this GridAction self, List subActions) { self.SubActions = subActions; return self; } #endregion } }