数据字典重写SaveResultEx UpdateEx方法手动控制事务自动生成流水号
数据字典重写SaveResultEx UpdateEx方法手动控制事务自动生成流水号
2. 重写界面层的DoSave方法
扫一扫加微信
本文适用于数据字典窗体根据某个字段类型自动生成改类型的流水序号。
比如产品类型是:
AB,生成AB0000001的序号。
ZZ,生成ZZ0000001的序号。
解决方案:
1. 重写DAL层的UpdateEx方法
C# Code:
/// <summary>
/// 数据字典:手动控制事务及自动生成流水号
/// </summary>
/// <param name="data">用户提交的数据</param>
/// <returns></returns>
public override SaveResultEx UpdateEx(DataSet data)
{
_UserManualControlTrans = true;
SaveResultEx result = new SaveResultEx((int)ResultID.SUCCESS, "");
try
{
this.BeginTransaction();//启动事务
string dataCode = "";
DataTable summary = data.Tables[tb_CommonDataDict.__TableName];//取出主表数据
if (summary.Rows[0].RowState == DataRowState.Added) //新增记录,设主键
{
string dataType = ConvertEx.ToString(summary.Rows[0][tb_CommonDataDict.DataType]);//取数据类型
dataCode = DocNoTool.GetDataSN(_CurrentTrans, dataType, true);//在同一事务内取流水号
summary.Rows[0][tb_CommonDataDict.DataCode] = dataCode;//自动生成流水号
}
else
{
dataCode = ConvertEx.ToString(summary.Rows[0][tb_CommonDataDict.DataCode]);
}
result = base.UpdateEx(data);//提交数据
result.PrimaryKey = dataCode;//返回自动生成的主键
this.CommitTransaction();//提交事务
}
catch
{
this.RollbackTransaction();//回滚
}
return result;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 数据字典:手动控制事务及自动生成流水号
/// </summary>
/// <param name="data">用户提交的数据</param>
/// <returns></returns>
public override SaveResultEx UpdateEx(DataSet data)
{
_UserManualControlTrans = true;
SaveResultEx result = new SaveResultEx((int)ResultID.SUCCESS, "");
try
{
this.BeginTransaction();//启动事务
string dataCode = "";
DataTable summary = data.Tables[tb_CommonDataDict.__TableName];//取出主表数据
if (summary.Rows[0].RowState == DataRowState.Added) //新增记录,设主键
{
string dataType = ConvertEx.ToString(summary.Rows[0][tb_CommonDataDict.DataType]);//取数据类型
dataCode = DocNoTool.GetDataSN(_CurrentTrans, dataType, true);//在同一事务内取流水号
summary.Rows[0][tb_CommonDataDict.DataCode] = dataCode;//自动生成流水号
}
else
{
dataCode = ConvertEx.ToString(summary.Rows[0][tb_CommonDataDict.DataCode]);
}
result = base.UpdateEx(data);//提交数据
result.PrimaryKey = dataCode;//返回自动生成的主键
this.CommitTransaction();//提交事务
}
catch
{
this.RollbackTransaction();//回滚
}
return result;
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
2. 重写界面层的DoSave方法
C# Code:
public override void DoSave(IButtonInfo sender)
{
//调用基类提供的保存方法
base.DoSaveEx(sender);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
{
//调用基类提供的保存方法
base.DoSaveEx(sender);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
扫一扫加微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网