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)圖

功能展示
對(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í)
代碼生成器下載

一路走來(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)注

作者:
RDIF
出處:
http://www.rzrgm.cn/huyong/
Email:
406590790@qq.com
QQ:
406590790
微信:
13005007127(同手機(jī)號(hào))
框架官網(wǎng):
http://www.guosisoft.com/
http://www.rdiframework.net/
框架其他博客:
http://blog.csdn.net/chinahuyong
http://www.rzrgm.cn/huyong
國(guó)思RDIF開(kāi)發(fā)框架
,
給用戶(hù)和開(kāi)發(fā)者最佳的.Net框架平臺(tái)方案,為企業(yè)快速構(gòu)建跨平臺(tái)、企業(yè)級(jí)的應(yīng)用提供強(qiáng)大支持。
關(guān)于作者:系統(tǒng)架構(gòu)師、信息系統(tǒng)項(xiàng)目管理師、DBA。專(zhuān)注于微軟平臺(tái)項(xiàng)目架構(gòu)、管理和企業(yè)解決方案,多年項(xiàng)目開(kāi)發(fā)與管理經(jīng)驗(yàn),曾多次組織并開(kāi)發(fā)多個(gè)大型項(xiàng)目,在面向?qū)ο?、面向服?wù)以及數(shù)據(jù)庫(kù)領(lǐng)域有一定的造詣?,F(xiàn)主要從事基于
RDIF
框架的技術(shù)開(kāi)發(fā)、咨詢(xún)工作,主要服務(wù)于金融、醫(yī)療衛(wèi)生、鐵路、電信、物流、物聯(lián)網(wǎng)、制造、零售等行業(yè)。
如有問(wèn)題或建議,請(qǐng)多多賜教!
本文版權(quán)歸作者和CNBLOGS博客共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,如有問(wèn)題,可以通過(guò)微信、郵箱、QQ等聯(lián)系我,非常感謝。

浙公網(wǎng)安備 33010602011771號(hào)