GZFramwork快速开发框架演练之会员系统(四)添加商品管理
?
1.1:創(chuàng)建表結(jié)構(gòu)
新建三張商品關(guān)聯(lián)的表,表模型如下:
?
創(chuàng)建SQL語句略
1.2:生成表Model(生成方法見上一節(jié))
1.3:生成tb_ProductType的單結(jié)構(gòu)界面然后添加到項(xiàng)目中
?
?
1.4:修改GZVIP.Dictionary模塊中DictionaryMain類,新增產(chǎn)品類型功能
?
public class DictionaryMain : ModuleFunctionManage{public DictionaryMain(){FunPools.AddFunction(typeof(frm_Level), "等級(jí)管理", "Level");FunPools.AddFunction( typeof(frm_ProductType), "產(chǎn)品類型", "ProductType" );}}Image添加如下三個(gè)圖片如下
相應(yīng)修改frm_ProductType界面
運(yùn)行重新加載字典管理DLL結(jié)果如下:
?
?
至此:商品類型添加完畢
接下來生成商品管理
?
2.1生成tb_Product表的但結(jié)構(gòu)界面并附加到項(xiàng)目
對(duì)界面做一些簡(jiǎn)單設(shè)置:
切換到后臺(tái)代碼修改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);//只有新增狀態(tài)下才可用base.AddControlsOnAddKey();this.BoundDatasource();}?
修改DoBoundEditData方法
//綁定明細(xì)編輯頁(yè)的數(shù)據(jù)public override void DoBoundEditData(){//base.DoBoundEditData(); LibraryTools.DoBindingEditorPanel(layoutControl1, EditData.Tables[_bll.SummaryTableName], "txt" );gc_Detail.DataSource = EditData.Tables[tb_ProductPrice._TableName];}?
編輯數(shù)據(jù)編輯頁(yè)增加按鈕和刪除按鈕兩個(gè)按鈕的點(diǎn)擊事件
?
//明細(xì)表增加private void btn_DetailAdd_Click(object sender, EventArgs e){//新增一條記錄,并設(shè)置商品編號(hào)DataRow dr = EditData.Tables[tb_ProductPrice._TableName].Rows.Add();dr[tb_ProductPrice.ProductID] = txtProductID.EditValue;}//明細(xì)表刪除private void btn_DetailDelete_Click(object sender, EventArgs e){if (gv_Detail.FocusedRowHandle < 0) return;if (Msg.AskQuestion("確定要?jiǎng)h除選中的價(jià)格記錄嗎?") == false) return;gv_Detail.DeleteSelectedRows();}?
修改DictionaryMain類
public class DictionaryMain : ModuleFunctionManage{public DictionaryMain(){FunPools.AddFunction(typeof(frm_Level), "等級(jí)管理", "Level");FunPools.AddFunction(typeof(frm_ProductType), "商品類型", "ProductType");FunPools.AddFunction( typeof(frm_Product), "商品管理", "Product" );}}?
?
2.2添加產(chǎn)品類別綁定
修改GZVIP.BLL.DastaCache類,增加ProductType只讀屬性
?
/// <summary>/// 產(chǎn)品類別/// </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()靜態(tài)方法
?
/// <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[] { "編號(hào)", "名稱" }, 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事件中添加數(shù)據(jù)源綁定
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);//只有新增狀態(tài)下才可用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方法,用于保存前驗(yàn)證
//保存前數(shù)據(jù)驗(yàn)證protected override bool ValidateBeforSave(){bool Validate = true &CommonTools.IsNotEmpBaseEdit(txtProductName, "產(chǎn)品名稱不能為空!")& CommonTools.IsNotEmpBaseEdit(txtProductTypeID, "產(chǎn)品類別編號(hào)不能為空!")& CommonTools.IsNotEmpBaseEdit(txtProductPrice, "默認(rèn)價(jià)格不能為空!");//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方法,修改狀態(tài)改變的時(shí)候
/// <summary>/// 設(shè)置按鈕可用狀態(tài),如果已經(jīng)在ControlOnlyReads或SetControlAccessable中添加,這里不需要重新設(shè)置/// </summary>/// <param name="Edit"></param>protected override void SetControlAccessable(bool Edit){//LibraryTools.SetControlAccessable(tp_Edit, Edit);base.SetControlAccessable(Edit);gv_Detail.OptionsBehavior.Editable = Edit;}?
完成以后運(yùn)行重新加載模塊,測(cè)試功能
?
?
添加商品到此完結(jié)
?
關(guān)于GZFramwork快速開發(fā)框架
作者:GarsonZhang? QQ:382237285
唯一QQ交流群:288706356
歡迎提出您的寶貴意見
轉(zhuǎn)載于:https://www.cnblogs.com/GarsonZhang/p/4321823.html
總結(jié)
以上是生活随笔為你收集整理的GZFramwork快速开发框架演练之会员系统(四)添加商品管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle Grid Infrastr
- 下一篇: 代理模式之Java动态代理