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

 

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

欢迎提出您的宝贵意见

时间: 2024-11-06 09:43:54

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

GZFramwork快速开发框架演练之会员系统(二)添加字典模块

开始前请先阅读 GZFramwork快速开发框架之窗体设计说明 第一步:准备模块图片 图片为2张大小分别为16x16和32x32,放在\Debug\images目录下    因为会员管理模块并不多    把NavBarControl Group的图标换成32x32大小的:   修改GZVip.Main.frmMain.cs代码 修改  RefreshModule()方法中Group的Image 修改前: 修改后   修改前后对比,左边为修改前,右边为修改后 第二步:添加项目 右键解决方案添加项目

GZFramwork快速开发框架演练之会员系统(三)添加会员等级管理

关于GZFramwork快速开发框架 作者:GarsonZhang  QQ:382237285 唯一QQ交流群:288706356 欢迎提出您的宝贵意见

GZFramwork快速开发框架演练之会员系统(一)框架源码下载

  GZFramwork框架开发环境为.NET 4.0  (必须)   VS2013+SQL2005+DevExpress v13.2.8+FastReport (推荐)  数据库建模工具PowerDesigner     GZFramwork快速开发框架源码下载地址   链接: http://pan.baidu.com/s/1qW0WNIO 密码: ddeg   下载以后分两部分, GZFramwork是框架的主体部分 GZCodeGenerate是框架代码生成器 关于框架结构: GZFram

GZFramwork快速开发框架之窗体设计说明

1.  明细页数据源获取(基类已经处理) 重载GetEditData 方法,此方法为自定义获得明细也的数据源,用于绑定明细页,此返回值会赋值给EditData //根据主键获得数据编辑页的数据         public override DataSet GetEditData(string KeyValue)         {             return _bll.GetAllData(KeyValue);         }   2.  明细页数据源设置(基类已经处理) 在1中

ASP.NET MVC4快速开发框架、这才是高大上档次后台管理UI界面

另外献上在<线体验Demo地址>希望大家也能从中得到一些启发.地址:http://121.40.148.178:8080/ . 用户名:guest,密码:123456QQ技术交流群:239168429 从事web开发多年,UI一直是我的痛,第一个用的是Ext,授权费用高暂且不说,那个前端框架实在是臃肿,肿到要用chrome浏览器才顺畅点. 然后就是easyui,比ext是轻巧点,但是商用也一样要授权费用,可能是因为我有洁癖,总感觉那前端框架还是有点臃肿,并且不好控制. 后来我前端技术提高了不少

ASP.NET快速开发框架、这才是高大上档次后台管理UI界面

另外献上在<线体验Demo地址>希望大家也能从中得到一些启发.地址:http://121.40.148.178:8080/ . 用户名:guest,密码:123456QQ技术交流群:239168429 从事web开发多年,UI一直是我的痛,第一个用的是Ext,授权费用高暂且不说,那个前端框架实在是臃肿,肿到要用chrome浏览器才顺畅点. 然后就是easyui,比ext是轻巧点,但是商用也一样要授权费用,可能是因为我有洁癖,总感觉那前端框架还是有点臃肿,并且不好控制. 后来我前端技术提高了不少

java-第十四章-代参的方法(二)-实现MyShopping系统的添加会员功能

 package com.wxws.sms; public class Customer {  int No;  int integarl; } package com.wxws.sms; public class Customers {  Customer[] customers = new Customer[100];  public void add(Customer cust){   for (int i = 0; i <customers.length; i++) {    if (c

ASP.NET MVC4 打造一套UI与后台并重-通用权限系统快速开发框架+精美UI界面 秒杀EasyUi、Ext

一.前言 从进行到软件开发这个行业现在已经有几年了,在整理出这个套开发框架之前自己做了不少重复造轮子的事.每次有新的项目总是要耗费不少时间在UI.权限和系统通用模块上面,自己累得要死,老板还骂没效率.为了能提高开发效率,同时也多拿拿奖金.多存点私房钱,我就着手做了一套以权限管理为主的快速开发框架.不求功能在所有项目中都得到使用,至少要大大提高开发效率. 二.需求分析    根据<那些年我们一起做过的项目>中各类客户对权限模块和通用模块以及UI的要求,我明确了这个系统中要实现的东西. 1.组织机

CRL快速开发框架系列教程四(删除数据)

本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框架系列教程四(删除数据) CRL快速开发框架系列教程五(使用缓存) CRL快速开发框架系列教程六(分布式缓存解决方案) CRL快速开发框架系列教程七(使用事务) CRL快速开发框架系列教程八(使用CRL.Package) CRL快速开发框架系列教程九(导入/导出数据) CRL快速开发框架系列教程十(