不管什麼系統,除了常規的單表處理外,主從表的應用都是很是廣泛的,RDIFramework.NET V3.3 WinForm版本中新增了一個主從表的事例供你們參考。主從表的界面設計大同小異,主要仍是在處理CRUD操做時的一些特殊性,如:新增、修改、刪除操做要放在同一事務提交,刪除主表數據,從表對應數據也應相應刪除等。主從表通常涉及兩個以上的表,一個是主表,其餘的是從表的,在實際狀況下,通常包含兩個表較多,下面咱們以兩個表的主從表關係進行分析展現。html
對於訂單管理主從表結構信息,主界面展現分爲兩部分:一部分是主表信息,一部分是從表信息,單擊主表對應信息後,顯示對應從表的列表信息,以下圖所示。
微信
新增產品以下圖所示,豐富的控件展現,列表直接編輯,自動計算並彙總等實用功能。
框架
打印功能:
分佈式
編輯界面保存代碼參考ide
在編輯界面不只能夠新增數據,還能夠編輯數據,調用相同的保存數據的方法。網站
//保存數據 private void btnSave_Click(object sender, EventArgs e) { if (!this.Changed) { //數據未被修改過就直接返回便可 this.DialogResult = DialogResult.OK; this.Close(); } else { CaseOrderEntity orderEntity = GetFormOrderEntity(); grdOrderDetail.FocusedView.CloseEditor(); var orderDetailList = new List<CaseOrderDetailEntity>(); for (int i = 0; i < this.gridViewOrderDetail.RowCount; i++) { var detailInfo = gridViewOrderDetail.GetRow(i) as CaseOrderDetailEntity; detailInfo.OrderId = orderEntity.Id; if (detailInfo != null) { orderDetailList.Add(detailInfo); } } try { int returnValue = caseOrderService.SaveOrder(this.UserInfo, OrderId, orderEntity, orderDetailList); if (returnValue > 0) { MessageBoxHelper.ShowSuccessMsg(RDIFrameworkMessage.MSG0011); this.DialogResult = DialogResult.OK; this.Close(); OnFormClosedRefreash?.Invoke(); } } catch (Exception ex) { ProcessException(ex); } } }
保存數據服務實現參考this
/// <summary> /// 新增或修改 /// </summary> /// <param name="userInfo">用戶</param> /// <param name="keyValue">主鍵值</param> /// <param name="entity">實體對象</param> /// <param name="detailEntitys">明細對象</param> /// <returns></returns> public int SaveOrder(UserInfo userInfo, string keyValue, CaseOrderEntity entity, List<CaseOrderDetailEntity> detailEntitys) { int returnValue = 0; var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, "SaveOrder-新增或修改"); ServiceUtil.ProcessBusinessDbWithTran(userInfo, parameter, dbProvider => { if (!string.IsNullOrEmpty(keyValue)) { //主表 var manager = new CaseOrderManager(dbProvider, userInfo); entity.Id = keyValue; returnValue = manager.UpdateEntity(entity); //明細表 var managerDetail = new CaseOrderDetailManager(dbProvider, userInfo); managerDetail.Delete(new KeyValuePair<string, object>(CaseOrderDetailTable.FieldOrderId, keyValue)); foreach(CaseOrderDetailEntity orderDetail in detailEntitys) { orderDetail.OrderId = keyValue; orderDetail.Enabled = 1; orderDetail.DeleteMark = 0; managerDetail.Add(orderDetail); } } else { //主表 var manager = new CaseOrderManager(dbProvider, userInfo); entity.Enabled = 1; entity.DeleteMark = 0; string orderKey = manager.Add(entity); returnValue = string.IsNullOrEmpty(orderKey) ? 0 : 1; //明細表 var managerDetail = new CaseOrderDetailManager(dbProvider, userInfo); foreach (CaseOrderDetailEntity orderDetail in detailEntitys) { orderDetail.OrderId = orderKey; orderDetail.Enabled = 1; orderDetail.DeleteMark = 0; managerDetail.Add(orderDetail); } } }); return returnValue; }
RDIFramework.NET — 基於.NET的快速信息化系統開發框架 — 系列目錄.net
RDIFramework.NET ━ .NET快速信息化系統開發框架 ━ 工做流程組件介紹設計
RDIFramework.NET框架SOA解決方案(集Windows服務、WinForm形式與IIS形式發佈)-分佈式應用code
RDIFramework.NET代碼生成器全新V3.5版本發佈-重大升級
一路走來數個年頭,感謝RDIFramework.NET框架的支持者與使用者,你們能夠經過下面的地址瞭解詳情。
RDIFramework.NET官方網站:http://www.rdiframework.net/
RDIFramework.NET官方博客:http://blog.rdiframework.net/
特別說明,框架相關的技術文章請以官方網站爲準,歡迎你們收藏!
RDIFramework.NET框架由專業團隊長期打造、一直在更新、一直在升級,請放心使用!
歡迎關注RDIFramework.net框架官方微信公衆號(微信號:guosisoft),及時瞭解最新動態。
使用微信掃描二維碼當即關注