这篇文章距离最后更新已过175 天,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
系统表单客开打印&输出
类全局变量
ShipBListUIFormWebPart MyPart;
IExportSettings settings;
// 模板ID
string TempID;
注册按钮
public override void AfterInit(IPart Part, EventArgs args)
{
MyPart = (ShipBListUIFormWebPart)Part;
base.AfterInit(Part, args);
// 获取工具栏控件
var _Toolbar = MyPart.GetUFControlByName(MyPart.TopLevelContainer, "Toolbar1") as IUFToolbar;
// 设置客开输出按钮
var BtnCustOutPut = UIControlBuilder.BuilderToolbarButton(_Toolbar, "True", "BtnCustOutPut", "True", "True", 60, 28, "29", "", true, false, "f77e3585-971f-4a21-b573-e1c681d78519", "f77e3585-971f-4a21-b573-e1c681d78519", "f77e3585-971f-4a21-b573-e1c681d78519");
UIControlBuilder.SetButtonAccessKey(BtnCustOutPut);
BtnCustOutPut.Text = "客开输出";
BtnCustOutPut.ID = "BtnCustOutPut";
BtnCustOutPut.AutoPostBack = true;
BtnCustOutPut.Action = "";
BtnCustOutPut.UFTabIndex = 10;
BtnCustOutPut.UIModel = MyPart.Model.ElementID;
BtnCustOutPut.Click += new EventHandler(BtnCustOutPut_Click);
((UFWebToolbarAdapter)_Toolbar).Items.Add(BtnCustOutPut as Control);
// 设置客开打印按钮
var BtnCustPrint = UIControlBuilder.BuilderToolbarButton(_Toolbar, "True", "BtnCustPrint", "True", "True", 60, 28, "30", "", true, false, "f77e3585-971f-4a21-b573-e1c681d78519", "f77e3585-971f-4a21-b573-e1c681d78519", "f77e3585-971f-4a21-b573-e1c681d78519");
UIControlBuilder.SetButtonAccessKey(BtnCustPrint);
BtnCustPrint.Text = "客开打印";
BtnCustPrint.ID = "BtnCustPrint";
BtnCustPrint.AutoPostBack = true;
BtnCustPrint.Action = "";
BtnCustPrint.UFTabIndex = 10;
BtnCustPrint.UIModel = MyPart.Model.ElementID;
BtnCustPrint.Click += new EventHandler(BtnCustPrint_Click);
((UFWebToolbarAdapter)_Toolbar).Items.Add(BtnCustPrint as Control);
}
打印
/// <summary>
/// 客开打印
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void BtnCustPrint_Click(object sender, EventArgs e)
{
try
{
MyPart.Model.ClearErrorMessage();
MyPart.DataCollect();
settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();
settings.PrintTemplateCatalogType = "Cust.Print";
settings.UserDataCallBack = new(GetData);
var ev = new UIActionEventArgs() { Tag = settings };
CommandFactory.DoCommand("OnPrint", MyPart.Action, sender, ev);
}
catch (Exception ex)
{
MyPart.Model.ErrorMessage.Message = ex.Message;
}
}
输出
/// <summary>
/// 客开输出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void BtnCustOutPut_Click(object sender, EventArgs e)
{
try
{
MyPart.Model.ClearErrorMessage();
MyPart.DataCollect();
settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();
settings.PrintTemplateCatalogType = "Cust.Print";
settings.UserDataCallBack = new(GetData);
// 由于输出的多模板选择无法直接获取到模板ID,通过系统自己写入的缓存来获取,必须在数据收集前,否则系统会清空该缓存
var PrintSet = (UFPrintEnvSettings)MyPart.CurrentState[$"UFExportSettings_{MyPart.CurrentState[$"ExportStatus_{MyPart.TaskId}"]}"];
TempID = PrintSet is null ? "" : PrintSet.PrintTemplateID;
var ev = new UIActionEventArgs() { Tag = settings };
CommandFactory.DoCommand("OnOutPut", MyPart.Action, sender, ev);
}
catch (Exception ex)
{
MyPart.Model.ErrorMessage.Message = ex.Message;
}
}
获取数据
/// <summary>
/// 获取数据
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
/// <exception cref="Exception"></exception>
public void GetData(object sender, DataCallBackEventArgs args)
{
if (MyPart.Model.Ship.SelectRecords.Count() <= 0)
return;
var Key = DateTime.Now.Ticks;
// 获取选中行的所有出货行的ID
var SQL = string.Empty;
var ShipLineIDs = new List<long>();
foreach (var item in (MyPart.Model?.Ship.SelectRecords).Cast<ShipRecord>())
{
SQL += $"INSERT INTO Cust_ShipPrint SELECT {Key},{item.GetValue("ShipLines_ID")};";
ShipLineIDs.Add(Convert.ToInt64(item.GetValue("ShipLines_ID")));
}
if (SQL is null or "") throw new Exception("数据收集失败!");
DataAccessor.RunSQL(DataAccessor.GetConn(), SQL, null);
// 如果是打印就从args实体中取
TempID = string.IsNullOrEmpty(TempID) ? args.CurrentPrintTemplateID : TempID;
if (TempID is null or "") throw new Exception("请选择一个模板!");
// 设置下载的PDF文件名
settings.FileName = TempID switch
{
"fd884389-2c8d-4be1-a5c1-3d67235147ea" => "出货单列表常用对账单",
_ => string.Empty,
};
var DPL = new DataParamList
{
DataParamFactory.CreateInput("TabID", Key, DbType.Int64),
DataParamFactory.CreateInput("TemplateID", args.CurrentPrintTemplateID, DbType.String)
};
DataAccessor.RunSP("Pro_Cust_GetShipPrint", DPL, out DataSet DS);
if (DS is null || DS.Tables?.Count <= 0 || DS.Tables[0].Rows?.Count <= 0)
throw new Exception("没找到符合条件的打印数据!");
args.ReturnData = DS;
}
}