1.1:创建表结构

新建三张商品关联的表,表模型如下:

创建SQL语句略

1.2:生成表Model(生成方法见上一节)

1.3:生成tb_ProductType的单结构界面然后添加到项目中

1.4:修改GZVIP.Dictionary模块中DictionaryMain类,新增产品类型功能

public class DictionaryMain : ModuleFunctionManage{public DictionaryMain(){FunPools.AddFunction(typeof(frm_Level), "等级管理", "Level");FunPools.AddFunction(

typeof(frm_ProductType), "产品类型", "ProductType"

);}}

Image添加如下三个图片如下

相应修改frm_ProductType界面

运行重新加载字典管理DLL结果如下:

至此:商品类型添加完毕

接下来生成商品管理

2.1生成tb_Product表的但结构界面并附加到项目

对界面做一些简单设置:

切换到后台代码修改Load代码(红色部分):

private void frm_Product_Load(object sender, EventArgs e){_SummaryView = gv_Summary;gv_Summary.OptionsView.ColumnAutoWidth = false;//_bll = new bllBusiness(typeof(tb_Product),"P",4);

_bll = new bllBusiness<tb_Product>("P", 4, typeof

(tb_ProductPrice));//添加只读列base.AddControlsOnlyRead(txtCreateUser,txtCreateDate,txtLastUpdateUser,txtLastUpdateDate);//只有新增状态下才可用base.AddControlsOnAddKey();this.BoundDatasource();}

修改DoBoundEditData方法

//绑定明细编辑页的数据public override void DoBoundEditData(){//base.DoBoundEditData();

LibraryTools.DoBindingEditorPanel(layoutControl1, EditData.Tables[_bll.SummaryTableName], "txt"

);gc_Detail.DataSource 

=

 EditData.Tables[tb_ProductPrice._TableName];}

编辑数据编辑页增加按钮和删除按钮两个按钮的点击事件

       //明细表增加private void btn_DetailAdd_Click(object sender, EventArgs e){//新增一条记录,并设置商品编号DataRow dr = EditData.Tables[tb_ProductPrice._TableName].Rows.Add();dr[tb_ProductPrice.ProductID] = txtProductID.EditValue;}//明细表删除private void btn_DetailDelete_Click(object sender, EventArgs e){if (gv_Detail.FocusedRowHandle < 0) return;if (Msg.AskQuestion("确定要删除选中的价格记录吗?") == false) return;gv_Detail.DeleteSelectedRows();}

修改DictionaryMain类

public class DictionaryMain : ModuleFunctionManage{public DictionaryMain(){FunPools.AddFunction(typeof(frm_Level), "等级管理", "Level");FunPools.AddFunction(typeof(frm_ProductType), "商品类型", "ProductType");FunPools.AddFunction(

typeof(frm_Product), "商品管理", "Product"

);}}

2.2添加产品类别绑定

修改GZVIP.BLL.DastaCache类,增加ProductType只读属性

/// <summary>/// 产品类别/// </summary>public DataTable ProductType{get{DataTable dt = CommonData.FindFromCache(tb_ProductType._TableName);if (dt == null){dt = bllDataCommon.GetAllDataTable(tb_ProductType._TableName, Loginer.CurrentLoginer.SystemDBName, tb_ProductType.ProductTypeID, tb_ProductType.ProductTypeName);AddToCache(dt.Copy());}return dt;}}

修改GZVIP.Library.BouindData类,增加BoundProductType()静态方法

/// <summary>/// 绑定商品类别/// </summary>/// <param name="lue"></param>/// <param name="displayCombination"></param>/// <param name="ADDNULL"></param>public static void BoundProductType(LookUpEdit lue, bool displayCombination, bool ADDNULL){lue.Properties.Columns.Clear();InitializeControl(lue, new string[] { "编号", "名称" }, new string[] { tb_ProductType.ProductTypeID, tb_ProductType.ProductTypeName });lue.Properties.Columns[0].Width = 40;lue.Properties.Columns[1].Width = 160;lue.Properties.PopupWidth = 200;DataTable dt = DataCache.Cache.ProductType.Copy();if (ADDNULL) dt = Common.ADDNULL(dt);string displayMember = tb_ProductType.ProductTypeName;if (displayCombination){Common.AddColumns(dt, tb_ProductType.ProductTypeID, tb_ProductType.ProductTypeName);displayMember = Common.DefNewColName;}DataBinder.BindingLookupEditDataSource(lue, dt, displayMember, tb_ProductType.ProductTypeID);}/// <summary>/// 绑定商品类别/// </summary>/// <param name="lue"></param>/// <param name="displayCombination"></param>/// <param name="ADDNULL"></param>public static void BoundProductType(CheckedComboBoxEdit lue, bool displayCombination, bool ADDNULL){DataTable dt = DataCache.Cache.ProductType.Copy();if (ADDNULL) dt = Common.ADDNULL(dt);string displayMember = tb_ProductType.ProductTypeName;if (displayCombination){Common.AddColumns(dt, tb_ProductType.ProductTypeID, tb_ProductType.ProductTypeName);displayMember = Common.DefNewColName;}DataBinder.BindingCheckedComboBoxSource(lue, dt, displayMember, tb_ProductType.ProductTypeID);}

在frm_Product的Load事件中添加数据源绑定

private void frm_Product_Load(object sender, EventArgs e){_SummaryView = gv_Summary;gv_Summary.OptionsView.ColumnAutoWidth = false;//_bll = new bllBusiness(typeof(tb_Product),"P",4);_bll = new bllBusiness<tb_Product>("P", 4, typeof(tb_ProductPrice));//添加只读列base.AddControlsOnlyRead(txtCreateUser,txtCreateDate,txtLastUpdateUser,txtLastUpdateDate);//只有新增状态下才可用base.AddControlsOnAddKey();this.BoundDatasource();}private void BoundDatasource(){DataBinderTools.Bound.BoundUserName(lue_UserName);DataBinderTools.Bound.BoundUserName(txtCreateUser);DataBinderTools.Bound.BoundUserName(txtLastUpdateUser);DataBinderTools.Bound.BoundProductType(txt_ProductType, false, true);DataBinderTools.Bound.BoundProductType(txtProductTypeID, true, true);}

重写ValidateBeforSave方法,用于保存前验证

//保存前数据验证protected override bool ValidateBeforSave(){bool Validate = true &CommonTools.IsNotEmpBaseEdit(txtProductName, "产品名称不能为空!")& CommonTools.IsNotEmpBaseEdit(txtProductTypeID, "产品类别编号不能为空!")& CommonTools.IsNotEmpBaseEdit(txtProductPrice, "默认价格不能为空!");//if (Validate == false) return;if (Validate == true)EditData.Tables[tb_Product._TableName].Rows[0][tb_Product.ProductTypeName] = (txtProductTypeID.GetSelectedDataRow() as DataRowView).Row[tb_ProductType.ProductTypeName];return Validate;}

重写SetControlAccessable方法,修改状态改变的时候

/// <summary>/// 设置按钮可用状态,如果已经在ControlOnlyReads或SetControlAccessable中添加,这里不需要重新设置/// </summary>/// <param name="Edit"></param>protected override void SetControlAccessable(bool Edit){//LibraryTools.SetControlAccessable(tp_Edit, Edit);base.SetControlAccessable(Edit);gv_Detail.OptionsBehavior.Editable = Edit;}

完成以后运行重新加载模块,测试功能

添加商品到此完结

关于GZFramwork快速开发框架

作者:GarsonZhang  QQ:382237285

唯一QQ交流群:288706356

欢迎提出您的宝贵意见

转载于:https://www.cnblogs.com/GarsonZhang/p/4321823.html

GZFramwork快速开发框架演练之会员系统(四)添加商品管理相关推荐

  1. 微服务商城系统(四)商品管理

    文章目录 一.SPU 与 SKU 1.SPU 与 SKU 的概念 2.tb_spu.tb_sku 表结构分析 二.商品管理 1.代码生成 2.查询分类品牌数据 3.新增商品 4.查询商品 5.修改商品 ...

  2. 数商云B2B电商系统商品管理功能剖析,助力家用电器企业业务提效

    如今,传统家用电器企业的发展空间不断受到电商渠道的积压,由于许多家电企业缺乏数字化的管理工具,导致管理低效,还很容易产生存货积压.供不应求等问题.随着家用电器市场需求疲软.竞争日趋白热化,家用电器企业 ...

  3. C/S系统快速开发框架(C#+Winform+SQL)

    C/S系统快速开发框架  适用开发:制造.服务.零售.商贸等行业的ERP.MRP.MES.CRM.MIS.HIS.POS数据管理应用系统  运行平台:Windows + .NET Framework ...

  4. C/S系统快速开发框架/winform快速开发框架源码(C#+SQL)

    C/S系统快速开发框架正在席卷软件和应用程序开发领域,winform所提供的开发速度的提高.在开发周期中适应客户需求的灵活性.成本效益和更高的客户满意度,正迅速使其成为应用程序开发的新标准. C/S和 ...

  5. .Net Core快速开发平台源码 敏捷开发框架OA系统 CRM快速开发框架

    .Net Core快速开发平台源码 3.4.1版本 敏捷开发框架OA系统 CRM快速开发框架 NET版本:.NET5 VUE版本:3.3.2 前后端分离,纯源码,无封装,无加密 当时公司要建自己的内部 ...

  6. ThinkPHP代码生成器快速开发框架:ThinkPHP+VUE+APIdoc+Restful+Oauth2.0+代码生成器+系统基础功能(用户管理、菜单管理、角色管理、权限管理、字典管理、部门管理)

    Wedo快速开发框架 https://github.com/weidong100/Wedo 根据数据表,快速生成控制器.模型.VUE界面.接口文档! 系统组成: PHP框架使用ThinkPHP5,官网 ...

  7. SpringCloud微服务实战——搭建企业级开发框架(四十八):【移动开发】整合uni-app搭建移动端快速开发框架-使用第三方UI框架

     uni-app默认使用uni-ui全端兼容的.高性能UI框架,在我们开发过程中可以满足大部分的需求了,并且如果是为了兼容性,还是强烈建议使用uni-ui作为UI框架使用.   如果作为初创公司,自身 ...

  8. .NET版Web后台快速开发框架 Coldairarrow

    来源:寒空飞箭 链接:http://www.cnblogs.com/coldairarrow/p/9626691.html 一.简介 本框架旨在为.NET开发人员提供一个Web后台快速开发框架,采用本 ...

  9. 飞特商城后台管理系统是接私活利器,企业级快速开发框架 商城后台 取之开源,用之开源

    简介: 飞特后台管理系统是接私活利器,企业级快速开发框架 技术选型 注册中心:zookeeper 分布式治理框架 :dubbo 核心框架:Spring Boot 权限框架:Apache Shiro 模 ...

最新文章

  1. centos6.7 64位环境下部署MySQL-5.7.13
  2. Silverlight 和WPF的Composite Guidance(Prism V2)发布了
  3. module 'matplotlib' has no attribute 'verbose'
  4. CodeForces - 1484E Skyline Photo(dp+单调栈)
  5. 将英文的week 转换为中文的 简单的方法
  6. 【软件测试】测试需求分析
  7. Java 1.1.7 String API (!!!)
  8. CSS基础-定位-李南江(修)
  9. android 邮件发送html,如何发送HTML电子邮件
  10. Liquibase修改表字段
  11. 西雅图亚马逊1个月入职日记,传闻中的“血汗工厂”真实存在吗?
  12. xubuntu切换回到ubuntu登陆界面
  13. drools规则语言指南(五)规则条件和行为
  14. 信息学奥赛一本通-1055:判断闰年
  15. 负载均衡主要的实现技术
  16. 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。
  17. ffmpeg 添加-bsf:a aac_adtstoasc 参数的方法
  18. Java实现在线聊天功能
  19. 录屏怎么录声音?电脑录视频怎么带声音?图文教学来了
  20. 服务器的1U,2U是什么概念

热门文章

  1. 如何搞定putty乱码
  2. android之SharedPreferences
  3. DEDEv5.6跳转网址修改成直链地址而非动态跳转
  4. 思科路由和交换限制用户出外网的几种策略
  5. 50多个强大的jQuery插件应用实例
  6. struts-config.xml 简述
  7. 一名优秀的开发人员,空闲时间会敲代码吗
  8. 不要再说找不到前端项目练手了!
  9. 问题 | list(set(list))如何实现顺序不变
  10. visio2013跨线问题