扩展按钮功能 - 扩展一个【复制单据】按钮操作详解
扩展按钮功能 - 扩展一个【复制单据】按钮操作详解
本文学习内容:
1. 扩展功能按钮
2. 复制单据
操作步骤:
1. 在模块主窗体给菜单添加扩展权限,如: ButtonAuthority.EX_01。
2. 给扩展权限定义名称:如:复制单据。
3. 当调试完成,在系统管理的《菜单管理》导入菜单。
参考下面的代码:
增加扩展按钮的权限:
C# Code:
menuSalesOrder.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFrameworkV5.Interfaces.ModuleID.SalesModule, AuthorityCategory.BUSINESS_ACTION_VALUE + ButtonAuthority.EX_01);
//来源:C/S框架网(www.csframework.com) QQ:23404761
menuSalesOrder.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFrameworkV5.Interfaces.ModuleID.SalesModule, AuthorityCategory.BUSINESS_ACTION_VALUE + ButtonAuthority.EX_01);
//来源:C/S框架网(www.csframework.com) QQ:23404761
修改扩展按钮自定义名称:
C# Code:
(menuSalesOrder.Tag as MenuItemTag).SetActionName(ButtonAuthority.EX_01, "复制单据");
//来源:C/S框架网 | www.csframework.com | QQ:23404761
//来源:C/S框架网 | www.csframework.com | QQ:23404761
控制按钮状态:
C# Code:
//查看模式,复制单据按钮可用
protected override void SetViewMode()
{
base.SetViewMode();
this.Buttons.GetButtonByName("btnClone").Enable =_AllowDataOperate && this.ButtonAuthorized(ButtonAuthority.EX_01);
protected override void SetViewMode()
{
base.SetViewMode();
this.Buttons.GetButtonByName("btnClone").Enable =_AllowDataOperate && this.ButtonAuthorized(ButtonAuthority.EX_01);
}
//修改模式,复制单据按钮灰掉,禁用
protected override void SetEditMode()
{
base.SetEditMode();
this.Buttons.GetButtonByName("btnClone").Enable = false;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
//修改模式,复制单据按钮灰掉,禁用
protected override void SetEditMode()
{
base.SetEditMode();
this.Buttons.GetButtonByName("btnClone").Enable = false;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
重写InitButtons方法,初始化窗体的按钮:
C# Code:
public override void InitButtons()
{
base.InitButtons();
//复制单据
if (this.ButtonAuthorized(ButtonAuthority.EX_01))
{
IButtonInfo btnClone = this.ToolbarRegister.CreateButton("btnClone", "复制单据", ToolBarGroup.扩展功能1,
Globals.LoadBitmap("32_Copy.png"), new Size(57, 28), true, true, this.DoClone);
_buttons.AddButton(btnClone);
}
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
public override void InitButtons()
{
base.InitButtons();
//复制单据
if (this.ButtonAuthorized(ButtonAuthority.EX_01))
{
IButtonInfo btnClone = this.ToolbarRegister.CreateButton("btnClone", "复制单据", ToolBarGroup.扩展功能1,
Globals.LoadBitmap("32_Copy.png"), new Size(57, 28), true, true, this.DoClone);
_buttons.AddButton(btnClone);
}
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
DoClone按钮事件:
C# Code:
public void DoClone(IButtonInfo sender)
{
this.AssertFocusedRow();
if (Msg.AskQuestion("确定要复制单据吗?"))
{
//获取当前单据
this.DoViewContent(this.Buttons.GetButtonByName(ButtonNameList.btnView));
if (this.IsViewMode)
{
//重置主表的数据
_BLLInstance.DataBindRow.SetAdded();//改为新增状态
SetEditorBindingValue(txtSONO, "*自动生成*", true);
_BLLInstance.DataBindRow[tb_SO.CreatedBy] = Loginer.CurrentUser.Account;
_BLLInstance.DataBindRow[tb_SO.CreationDate] = DateTime.Now;
//重置明细表的数据
foreach (DataRow R in _BLLInstance.CurrentBusiness.Tables[tb_SOs.__TableName].Rows)
{
R.SetAdded();//改为新增状态
R[tb_SOs.SONO] = DBNull.Value;//清空外键
R[tb_SOs.CreatedBy] = Loginer.CurrentUser.Account;
R[tb_SOs.CreationDate] = DateTime.Now;
}
//
//以下处理多个明细表
//
_UpdateType = UpdateType.Add;
this.SetEditMode();
this.ButtonStateChanged(UpdateType.Add);
}
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
public void DoClone(IButtonInfo sender)
{
this.AssertFocusedRow();
if (Msg.AskQuestion("确定要复制单据吗?"))
{
//获取当前单据
this.DoViewContent(this.Buttons.GetButtonByName(ButtonNameList.btnView));
if (this.IsViewMode)
{
//重置主表的数据
_BLLInstance.DataBindRow.SetAdded();//改为新增状态
SetEditorBindingValue(txtSONO, "*自动生成*", true);
_BLLInstance.DataBindRow[tb_SO.CreatedBy] = Loginer.CurrentUser.Account;
_BLLInstance.DataBindRow[tb_SO.CreationDate] = DateTime.Now;
//重置明细表的数据
foreach (DataRow R in _BLLInstance.CurrentBusiness.Tables[tb_SOs.__TableName].Rows)
{
R.SetAdded();//改为新增状态
R[tb_SOs.SONO] = DBNull.Value;//清空外键
R[tb_SOs.CreatedBy] = Loginer.CurrentUser.Account;
R[tb_SOs.CreationDate] = DateTime.Now;
}
//
//以下处理多个明细表
//
_UpdateType = UpdateType.Add;
this.SetEditMode();
this.ButtonStateChanged(UpdateType.Add);
}
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
效果图:


参考文档:
扩展按钮功能:数据字典窗体复制记录单据数据 | CSFrameworkV5旗舰版开发指南|C/S开发框架
在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)
Winform快速开发框架之权限系统设计(3) - 功能按钮权限控制基本原理
如何扩展窗体的自定义权限按钮
关于扩展权限、扩展功能按钮及自定义功能点的命名|C/S框架网
C/S开发框架权限扩展与定制按钮功能详细设计
Winform开发框架 - 特殊权限控制(扩展权限和自定义按钮功能)
踩坑日记 | DevExpress GridView.GetSelectedRows方法返回无效的RowHandle行号|C/S开发框架
CSFrameworkV6试用版开发指南 | GetDataByKey 方法使用与扩展应用|C/S开发框架
CSFrameworkV6旗舰版 | 业务单据复制功能,支持复制多级明细表|C/S开发框架
ButtonAuthority / AuthorityCategory 权限值定义|C/S开发框架
CSFrameworkV6旗舰版 - 业务单据复制功能,支持复制多级明细表
GoF设计模式:桥接模式(Bridge Pattern)—处理多维度变化-C/S开发框架
GoF设计模式:装饰模式(Decorator Pattern)—扩展系统功能-C/S开发框架
tb_MyActions初始化数据
C/S系统开发框架权限系统 - 功能按钮权限值 - ButtonAuthority类详解
扩展按钮功能:数据字典窗体复制记录单据数据 | CSFrameworkV5旗舰版开发指南|C/S开发框架
在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)
Winform快速开发框架之权限系统设计(3) - 功能按钮权限控制基本原理
如何扩展窗体的自定义权限按钮
关于扩展权限、扩展功能按钮及自定义功能点的命名|C/S框架网
C/S开发框架权限扩展与定制按钮功能详细设计
Winform开发框架 - 特殊权限控制(扩展权限和自定义按钮功能)
踩坑日记 | DevExpress GridView.GetSelectedRows方法返回无效的RowHandle行号|C/S开发框架
CSFrameworkV6试用版开发指南 | GetDataByKey 方法使用与扩展应用|C/S开发框架
CSFrameworkV6旗舰版 | 业务单据复制功能,支持复制多级明细表|C/S开发框架
ButtonAuthority / AuthorityCategory 权限值定义|C/S开发框架
CSFrameworkV6旗舰版 - 业务单据复制功能,支持复制多级明细表
GoF设计模式:桥接模式(Bridge Pattern)—处理多维度变化-C/S开发框架
GoF设计模式:装饰模式(Decorator Pattern)—扩展系统功能-C/S开发框架
tb_MyActions初始化数据
C/S系统开发框架权限系统 - 功能按钮权限值 - ButtonAuthority类详解
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
