WinFramework轻量级开发框架 - 单表数据窗体开发 - 界面二次开发
C/S结构快速开发框架/软件快速开发平台
WinFrameworkV2.1轻量级框架
原创软件@csframework.com
目录
一、数据库新建表(dt_Data_Product)
表结构预览:
SQL 语句:
CREATE TABLE [dbo].[dt_Data_Product](
[isid] [INT] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[ProductID] [VARCHAR](20) NOT NULL,
[Material] [VARCHAR](20) NULL,
[ProductName] [VARCHAR](20) NULL,
[ZJM] [VARCHAR](20) NULL,
[Specification] [NVARCHAR](20) NULL,
[Unit] [VARCHAR](10) NULL,
[Remark] [NVARCHAR](200) NULL,
[CreateUser] [VARCHAR](20) NULL,
[CreateDate] [DATETIME] NULL,
[LastUpdateUser] [VARCHAR](20) NULL,
[LastUpdateDate] [DATETIME] NULL,
CONSTRAINT [PK_DT_DATA_PRODUCT] PRIMARY KEY CLUSTERED
(
[ProductID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'自增列' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'isid'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'产品编号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'ProductID'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'材质' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'Material'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'产品名称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'ProductName'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'助记码' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'ZJM'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'规格' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'Specification'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'单位' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'Unit'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'备注' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'Remark'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建人' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'CreateUser'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'CreateDate'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'最后修改人' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'LastUpdateUser'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'最后修改时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product', @level2type=N'COLUMN',@level2name=N'LastUpdateDate'
GO
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'基础资料-产品资料' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'dt_Data_Product'
GO
二、代码生成器生成代码
2.1 生成Model层代码
代码文件:
2.2 生成窗体代码
使用辅助组件生成模式,窗体会采用 ViewDataBinding 绑定数据模式 。
数据绑定模式,参考: https://www.cscode.net/archive/WinFramework/1634565184.html
生成的窗体代码:
2.3 复制代码文件到VS项目
复制 Model 代码 ( dt_Data_Product.cs ) 到 WinFrameworkDemo.Models 项目:
复制 窗体代码(frm_Product.*.cs) 到项目 WinFrameworkDemo.Dictionary项目:
完成第二步后,窗体 frm_Product 中会有一个报错,添加引用即可解决:
2.4 创建BLL类
这里需要手动在 WinFrameworkDemo.Business 中创建一个 BLL_Product 类:
代码参考:
using GZDBHelper;
using System;
using System.Data;
using WinFrameworkDemo.Models;
namespace WinFrameworkDemo.Business.Data
{
public class BLL_Product : Base.bllBaseUserCommon
{
public BLL_Product()
: base(typeof(dt_Data_Product))
{
}
}
}
三、注册模块功能
3.1 在模块的 Management.cs 中注册功能
FunctionCollection.AddFunction(typeof(frm_Product), "产品资料", "Function_Product");
四、界面二次开发
4.1 TextEdit组件更改为LookUpEdit下拉参考数据组件
比如【材质类型】要设置为可下拉选择组件(LookUpEdit),需要把生成的默认类型(TextEdit)改为LookUpEdit组件。
更改为:
数据编辑页面的材质也改为LookUpEdit组件:
4.2 绑定LookUpEdit组件的下拉数据源
WinFramework.Library.DataBinderTools.Bound.BoundCommonDictDataName(txtMaterial, Business.CustomerEnum.EnumCommonDicData.产品材质, false, false);
BoundCommonDictDataName通用方法,用于绑定LookUpEdit组件的下拉数据源:
/// <summary>
/// 绑定基础数据
/// </summary>
/// <param name="lue">LookUpEdit组件</param>
/// <param name="E">公共数据类型,如:产品材质、付款方式</param>
/// <param name="displayCombination"></param>
/// <param name="AddNull">true:下拉数据源第一行显示空值</param>
public static void BoundCommonDictDataName(LookUpEdit lue, EnumCommonDicData E, bool displayCombination, bool AddNull)
{
BoundCommonDictDataName(lue.Properties, E, displayCombination, AddNull);
}
参数说明:
lue:LookUpEdit组件
E:公共数据类型,如:产品材质、付款方式
displayCombination:下拉框默认显示【编码】+【名称】数据,如: 01 - 钢材, 或: 02 - 铝材
AddNull:True-下拉窗体第1行为空行,用于查询界面。
4.3 设置数据校验
更改控件类型后,要重新设置 ValidateForSave 属性 和 ViewDataBinding 属性:
ValidateForSave 属性:用于保存前数据校验。
ViewDataBinding 属性:用于数据源绑定。若不设置该属性,您更改了控件的值,数据源不会更新,也不会保存数据。
更多详细资料,参考: https://www.cscode.net/archive/WinFramework/1634565184.html
4.4 添加公共字典数据详情
添加公共字段类型(扩展公共字典类型):
https://www.cscode.net/archive/WinFramework/1634571374.html
五、效果展示