/// <summary> /// 添加列和操作 /// </summary> public override void OnResponse( AjaxTableSearchRequest request, AjaxTableSearchResponse response) { var idColumn = response.Columns.AddIdColumn("Id"); idColumn.StandardSetupFor <BuyerOrderCrudController>(request); response.Columns.AddHtmlColumn("OrderProducts", "30%"); response.Columns.AddHtmlColumn("Price", "70"); response.Columns.AddHtmlColumn("Quantity", "70"); response.Columns.AddHtmlColumn("ShippedQuantity", "70"); response.Columns.AddHtmlColumn("TotalCost", "70"); response.Columns.AddEnumLabelColumn("State", typeof(OrderState), "50"); response.Columns.AddMemberColumn("Seller", "70"); response.Columns.AddEnumLabelColumn("Deleted", typeof(EnumDeleted), "70"); var actionColumn = response.Columns.AddActionColumn("5%"); var deleted = request.Conditions.GetOrDefault <bool>("Deleted"); if (!deleted) { idColumn.AddConfirmActionForMultiChecked( new T("MergePayment"), "fa fa-credit-card", new T("Please select orders to merge payment"), new T("MergePayment"), BaseScriptStrings.ConfirmMessageTemplateForMultiSelected( new T("Sure to merge following order's payment?"), "ToString"), BaseScriptStrings.PostConfirmedActionForMultiSelected( "Serial", "/user/orders/merge_payment")); actionColumn.AddButtonForOpenLink( new T("View"), "btn btn-xs btn-info", "fa fa-edit", "/user/orders/edit?serial=<%-row.Serial%>"); } actionColumn.AddHtmlAction("OrderActions"); }
/// <summary> /// 添加删除按钮 /// 点击后弹出确认框,确认后把json=[数据Id]提交到删除url /// </summary> /// <param name="column">操作列</param> /// <param name="typeName">类型名称</param> /// <param name="deleteUrl">删除使用的Url</param> /// <param name="name">名称,不指定时使用默认值</param> /// <param name="buttonClass">按钮的Css类,不指定时使用默认值</param> /// <param name="iconClass">图标的Css类,不指定时使用默认值</param> /// <param name="titleTemplate">标题的模板,格式是underscore.js的格式,参数传入rows</param> /// <param name="urlTemplate">编辑Url的模板,格式是underscore.js的格式,参数传入rows</param> /// <param name="primaryKey">数据Id保存的名称,不指定时使用默认值</param> /// <param name="dialogParameters">弹出框的参数,不指定时使用默认值</param> public static void AddDeleteAction( this AjaxTableActionColumn column, string typeName, string deleteUrl, string name = null, string buttonClass = null, string iconClass = null, string titleTemplate = null, string urlTemplate = null, string primaryKey = null, object dialogParameters = null) { primaryKey = primaryKey ?? nameof(IEntity <Guid> .Id); column.AddConfirmActionForBelongedRow( name ?? new T("Delete"), buttonClass ?? "btn btn-xs btn-danger", iconClass ?? "fa fa-remove", titleTemplate ?? string.Format(new T("Delete {0}"), new T(typeName)), BaseScriptStrings.ConfirmMessageTemplateForMultiSelected( string.Format(new T("Sure to delete following {0}?"), new T(typeName)), "ToString"), BaseScriptStrings.PostConfirmedActionForMultiSelected(primaryKey, deleteUrl), dialogParameters ?? new { type = "type-danger" }); }
/// <summary> /// 添加恢复按钮 /// 点击后弹出确认框,确认后把json=[数据Id]提交到恢复url /// </summary> /// <param name="column">操作列</param> /// <param name="typeName">类型名称</param> /// <param name="recoverUrl">恢复使用的Url</param> /// <param name="name">名称,不指定时使用默认值</param> /// <param name="buttonClass">按钮的Css类,不指定时使用默认值</param> /// <param name="iconClass">图标的Css类,不指定时使用默认值</param> /// <param name="titleTemplate">标题的模板,格式是underscore.js的格式,参数传入rows</param> /// <param name="urlTemplate">编辑Url的模板,格式是underscore.js的格式,参数传入rows</param> /// <param name="primaryKey">数据Id保存的名称,不指定时使用默认值</param> /// <param name="dialogParameters">弹出框的参数,不指定时使用默认值</param> public static void AddRecoverAction( this AjaxTableActionColumn column, string typeName, string recoverUrl, string name = null, string buttonClass = null, string iconClass = null, string titleTemplate = null, string urlTemplate = null, string primaryKey = null, object dialogParameters = null) { primaryKey = primaryKey ?? nameof(IEntity <Guid> .Id); column.AddConfirmActionForBelongedRow( name ?? new T("Recover"), buttonClass ?? "btn btn-xs btn-info", iconClass ?? "fa fa-history", titleTemplate ?? string.Format(new T("Recover {0}"), new T(typeName)), BaseScriptStrings.ConfirmMessageTemplateForMultiSelected( string.Format(new T("Sure to recover following {0}?"), new T(typeName)), "ToString"), BaseScriptStrings.PostConfirmedActionForMultiSelected(primaryKey, recoverUrl), dialogParameters); }
/// <summary> /// 添加删除相关的按钮 /// 如果数据类型可以回收,则添加批量删除或批量恢复和永久删除 /// 如果数据类型不可以回收,则添加批量永久删除 /// </summary> /// <param name="column">Id列</param> /// <param name="request">搜索请求</param> /// <param name="dataType">数据类型</param> /// <param name="typeName">类型名称</param> /// <param name="batchUrl">批量操作使用的Url</param> /// <param name="primaryKey">主键名称,不传入时使用默认</param> /// <param name="allowDeleteRecover">是否允许删除恢复,不传入时使用默认</param> /// <param name="allowDeleteForever">是否允许永久删除,不传入时使用默认</param> public static void AddDeleteActions( this AjaxTableIdColumn column, AjaxTableSearchRequest request, Type dataType, string typeName, string batchUrl, string primaryKey = null, bool?allowDeleteRecover = null, bool?allowDeleteForever = null) { // 判断需要添加哪些操作 bool addBatchDelete = false; bool addBatchRecover = false; bool addBatchDeleteForever = false; if (typeof(IHaveDeleted).GetTypeInfo().IsAssignableFrom(dataType)) { var deleted = request.Conditions.GetOrDefault <bool>("Deleted"); addBatchDelete = (allowDeleteRecover == false) ? false : !deleted; addBatchRecover = (allowDeleteRecover == false) ? false : deleted; addBatchDeleteForever = (allowDeleteForever == false) ? false : deleted; } else { addBatchDeleteForever = allowDeleteForever ?? true; } // 添加批量删除 typeName = new T(typeName); primaryKey = primaryKey ?? nameof(IEntity <Guid> .Id); if (addBatchDelete) { column.AddConfirmActionForMultiChecked( new T("Batch Delete"), "fa fa-recycle", new T("Please select {0} to delete", typeName), new T("Batch Delete"), BaseScriptStrings.ConfirmMessageTemplateForMultiSelected( new T("Sure to delete following {0}?", typeName), "ToString"), BaseScriptStrings.PostConfirmedActionForMultiSelected( primaryKey, batchUrl + "?action=delete"), new { type = "type-danger" }); } // 添加批量恢复 if (addBatchRecover) { column.AddConfirmActionForMultiChecked( new T("Batch Recover"), "fa fa-history", new T("Please select {0} to recover", typeName), new T("Batch Recover"), BaseScriptStrings.ConfirmMessageTemplateForMultiSelected( new T("Sure to recover following {0}?", typeName), "ToString"), BaseScriptStrings.PostConfirmedActionForMultiSelected( primaryKey, batchUrl + "?action=recover")); } // 添加批量永久删除 if (addBatchDeleteForever) { column.AddConfirmActionForMultiChecked( new T("Batch Delete Forever"), "fa fa-remove", new T("Please select {0} to delete", typeName), new T("Batch Delete Forever"), BaseScriptStrings.ConfirmMessageTemplateForMultiSelected( new T("Sure to delete following {0} forever?", typeName), "ToString"), BaseScriptStrings.PostConfirmedActionForMultiSelected( primaryKey, batchUrl + "?action=delete_forever"), new { type = "type-danger" }); } }