<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      RDIFramework.NET V3.3 WinForm版新增訂單管理主從表事例

      功能描述

      無(wú)論什么系統(tǒng),除了常規(guī)的單表處理外,主從表的應(yīng)用都是非常普遍的,RDIFramework.NET V3.3 WinForm版本中新增了一個(gè)主從表的事例供大家參考。主從表的界面設(shè)計(jì)大同小異,主要還是在處理CRUD操作時(shí)的一些特殊性,如:新增、修改、刪除操作要放在同一事務(wù)提交,刪除主表數(shù)據(jù),從表對(duì)應(yīng)數(shù)據(jù)也應(yīng)相應(yīng)刪除等。主從表一般涉及兩個(gè)以上的表,一個(gè)是主表,其他的是從表的,在實(shí)際情況下,一般包含兩個(gè)表較多,下面我們以?xún)蓚€(gè)表的主從表關(guān)系進(jìn)行分析展示。

      訂單管理主從表關(guān)系結(jié)構(gòu)圖

      訂單管理主從表關(guān)系結(jié)構(gòu)圖

      功能展示

      對(duì)于訂單管理主從表結(jié)構(gòu)信息,主界面展示分為兩部分:一部分是主表信息,一部分是從表信息,單擊主表對(duì)應(yīng)信息后,顯示對(duì)應(yīng)從表的列表信息,如下圖所示。

      新增產(chǎn)品如下圖所示,豐富的控件展示,列表直接編輯,自動(dòng)計(jì)算并匯總等實(shí)用功能。

      打印功能:

      核心功能代碼參考

      編輯界面保存代碼參考

      在編輯界面不僅可以新增數(shù)據(jù),還可以編輯數(shù)據(jù),調(diào)用相同的保存數(shù)據(jù)的方法。

      		//保存數(shù)據(jù)
              private void btnSave_Click(object sender, EventArgs e)
              {
                  if (!this.Changed)
                  {   
                      //數(shù)據(jù)未被修改過(guò)就直接返回即可
                      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);
                      }
                  }
              }
      
      

      保存數(shù)據(jù)服務(wù)實(shí)現(xiàn)參考

      		/// <summary>
              /// 新增或修改
              /// </summary>
              /// <param name="userInfo">用戶(hù)</param>
              /// <param name="keyValue">主鍵值</param>
              /// <param name="entity">實(shí)體對(duì)象</param>
              /// <param name="detailEntitys">明細(xì)對(duì)象</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);
                          //明細(xì)表
                          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;
                          //明細(xì)表
                          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的快速信息化系統(tǒng)開(kāi)發(fā)框架 — 系列目錄

      RDIFramework.NET ━ .NET快速信息化系統(tǒng)開(kāi)發(fā)框架 ━ 工作流程組件介紹

      RDIFramework.NET框架SOA解決方案(集Windows服務(wù)、WinForm形式與IIS形式發(fā)布)-分布式應(yīng)用

      RDIFramework.NET代碼生成器全新V3.5版本發(fā)布-重大升級(jí)

      代碼生成器下載

      1、代碼生成器使用說(shuō)明下載

      2、代碼生成器百度網(wǎng)盤(pán)下載地址

      3、代碼生成器本地下載


      一路走來(lái)數(shù)個(gè)年頭,感謝RDIFramework.NET框架的支持者與使用者,大家可以通過(guò)下面的地址了解詳情。

      RDIFramework.NET官方網(wǎng)站:http://www.rdiframework.net/

      RDIFramework.NET官方博客:http://blog.rdiframework.net/

      特別說(shuō)明,框架相關(guān)的技術(shù)文章請(qǐng)以官方網(wǎng)站為準(zhǔn),歡迎大家收藏!

      RDIFramework.NET框架由專(zhuān)業(yè)團(tuán)隊(duì)長(zhǎng)期打造、一直在更新、一直在升級(jí),請(qǐng)放心使用!

      歡迎關(guān)注RDIFramework.net框架官方微信公眾號(hào)(微信號(hào):guosisoft),及時(shí)了解最新動(dòng)態(tài)。

      使用微信掃描二維碼立即關(guān)注

      posted @ 2018-12-13 10:25  .NET快速開(kāi)發(fā)框架  閱讀(642)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产精品一区在线蜜臀| 国产av激情无码久久| 免费99视频| 亚洲精品乱码久久久久久中文字幕 | 四虎在线中文字幕一区| 成熟少妇XXXXX高清视频| 亚洲日韩精品无码一区二区三区 | 久热这里只有精品视频3| 国产精品多p对白交换绿帽| 中文字幕国产精品一区二| 色猫咪av在线网址| 日本无遮挡吸乳呻吟视频| 一区二区三区成人| 蜜臀在线播放一区在线播放| 麻豆精产国品一二三产| 亚洲成人av在线系列| 麻花传媒在线观看免费| 成人3D动漫一区二区三区| 亚洲三区在线观看无套内射 | 辛集市| 97se亚洲国产综合自在线观看| 亚洲一本二区偷拍精品| 国产精品免费看久久久| 久久99久久99精品免观看| 熟女亚洲综合精品伊人久久 | 202丰满熟女妇大| 国产国产午夜福利视频| 啦啦啦视频在线日韩精品| 亚洲中文字幕伊人久久无码| 国产专区一va亚洲v天堂| 国产免费性感美女被插视频| 国产精品一线二线三线区| 精品视频在线观看免费观看| 国产亚洲精品久久久久久无亚洲 | 国语精品自产拍在线观看网站| 亚洲精品中文字幕码专区| 国产精品黑色丝袜在线观看| 欧美成人精品手机在线| 人人妻人人澡人人爽人人精品av| 国内视频偷拍一区,二区,三区| 熟女系列丰满熟妇AV|