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

 

1.1:创建表结构

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

image

 

创建SQL语句略

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

image

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

 

image

 

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

 

public class DictionaryMain : ModuleFunctionManage
    {

        public DictionaryMain()
        {
            FunPools.AddFunction(typeof(frm_Level), "等级管理", "Level");
            FunPools.AddFunction(
typeof(frm_ProductType), "产品类型", "ProductType"
);
        }
    }

Image添加如下三个图片如下

image

相应修改frm_ProductType界面

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

 

123

 

至此:商品类型添加完毕

接下来生成商品管理

 

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

image

对界面做一些简单设置:

image

image

切换到后台代码修改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];
        }

 

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

image

 

       //明细表增加
        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"
);
        }
    }

 

image

 

2.2添加产品类别绑定

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

image

image

 

/// <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()静态方法

image

image

 

/// <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

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值