新增基础资料单表窗体 - MiniFramework蝇量框架 - Winform框架
新增基础资料单表窗体 - MiniFramework蝇量框架 - Winform框架
目录
一、添加 Windows 窗体
在 FormsDemo 子目录下添加一个基础资料窗体:
二、窗体继承 frmBaseData
frmCustomer : Form 改为 frmCustomer : frmBaseData
三、添加按钮组件(ucButtonFunction)
参考文章:ucButtonFunction 组件详解
https://www.cscode.net/archive/miniframework/256700773441541.html
四、从其他Demo窗体复制XtraTableControl组件
打开《用户管理》界面,点击XtraTableControl组件,按ctrl+c键复制组件及内容。
从其他Demo窗体复制XtraTableControl组件,包括 【数据查询】和【编辑详情】两个TabPage页面及所有子组件,提高开发效率!
打开frmCustomer界面,在空白区域粘贴XtraTableControl组件及内容,效果:
【客户资料】改名为【商户资料】
本 示例 窗体的表名:tb_Customer ,该表有个 CustomerAttributes 属性,可以定义客户的属性,比如【客户】、【供应商】、【协作单位】、【子公司】等类型。因此当前窗体的名称改为【商户资料】更合适!
五、添加或修改查询条件
定义查询条件,修改查询条件
实现【查询】【清空】按钮Click事件
点击【查询】、【清空】按钮,自动生成对应的Click事件
public partial class frmCustomer : Form
{
public frmCustomer()
{
InitializeComponent();
}
private void frmCustomer_Load(object sender, EventArgs e)
{
//
}
private void btnQuery_Click(object sender, EventArgs e)
{
//
}
private void btnEmpty_Click(object sender, EventArgs e)
{
//
}
}
六、添加或修改表格的列
Grid Designer Columns 表格设计器
七、编辑详情,添加文本组件
八、绑定文本输入框的数据源
//绑定所有文本框的数据源
private void DoBindingSummaryEditor(DataTable summary)
{
DataBinder.BindingEditorPanel(gcDetailEditor, summary);
//独立绑定其他自定义组件的数据源
DataBinder.BindingControl(ucCusAttributes, summary, tb_Customer.AttributeCodes, "EditValue");
}
九、新增ORM模型(tb_Customer)
ORM模型(ORM Model)是数据库表结构映射为C#类,主要作用是自动生成SQL脚本实现自动保存数据。
ORM模型是MiniFramework 至关重要的一种逻辑设计,所有模型定义在:CSFramework.Mini.Core.Models目录下。
操作步骤:
在子目录:CSFramework.Mini.Core.Models 下添加一个类。
参考:tb_Customer.cs
十、新增数据访问层(dalCustomer)
操作步骤:
在子目录:CSFramework.Mini.Core.DAL下添加一个类。
参考:dalCustomer.cs
public class dalCustomer : dalBaseDataDict
{
public dalCustomer(Loginer loginer)
: base(loginer)
{
_TableName = tb_Customer.__TableName;//表名
_KeyName = tb_Customer.__KeyName; //主键字段
_ModelType = typeof(tb_Customer);//客户资料模型
}
protected override IGenerateSqlCommand CreateSqlGenerator(DataTable table)
{
if (table.TableName == tb_Customer.__TableName)
return new GenerateSqlCmdByTableFields(typeof(tb_Customer), table, this.GeneratorFactory);
throw new Exception(table.TableName + "表没有ORM模型!");
}
}
十一、新增业务逻辑层(bllCustomer)
操作步骤:
在子目录:CSFramework.Mini.Core.BLL下添加一个类。
参考:bllCustomer.cs
public class bllCustomer : bllBaseDataDict
{
private dalCustomer _DAL;
public bllCustomer()
{
_KeyFieldName = tb_Customer.__KeyName; //主键字段
_SummaryTableName = tb_Customer.__TableName;//表名
_DAL = new dalCustomer(Loginer.Current);
}
}
十二、实现查询功能
在DAL层添加一个查询方法
根据查询条件的数目,定义一个通用查询方法
public DataTable Query(string CustomerFrom, string CustomerTo, string Name, string Attribute)
{
CommandHelper sp = _Database.CreateSqlProc("usp_SearchCustomer");
sp.AddParam("CustomerFrom", CustomerFrom);
sp.AddParam("CustomerTo", CustomerTo);
sp.AddParam("CustomerName", Name);
sp.AddParam("Attribute", Attribute);
return _Database.GetTable(sp.Command, tb_Customer.__TableName);
}
开发存储过程
开发 usp_SearchCustomer 存储过程。
提示:简单的SQL查询可写在DAL层。复杂的查询逻辑建议封装到存储过程!
在界面层调用查询方法
private void btnQuery_Click(object sender, EventArgs e)
{
try
{
frmWaitingEx.ShowMe(this);
var DAL = new dalCustomer(Loginer.Current);
var dt = DAL.Query(txt_CustomerFrom.Text, txt_CustomerTo.Text, txt_Name.Text, ConvertEx.ToString(txt_Attr.EditValue));
gcSummary.DataSource = dt;
}
finally
{
frmWaitingEx.HideMe(this);
}
}
十三、实现增、删、改、查功能
实现 ucButtonFunction 组件按钮的Click事件
frmCustomer 窗体已实现的 Click 事件:
参考 frmCustomer.cs
十五、参考文章
ucButtonFunction 组件详解
https://www.cscode.net/archive/miniframework/256700773441541.html