单据打印开发
在*UIModelActionExtend.cs里加代码
private void PrintClick_Extend(object sender, UIActionEventArgs e)
{
IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();
settings.PrintTemplateCatalogType = "UFIDA.U9.CBO.LW.BLWorkerInf0914";
settings.UserDataCallBack = new DataCallBackHandle(this.GetPrintData);
e.Tag = settings;
//UFIDA.U9.UI.Commands.CommandFactory.DoCommand("OnPrint", this, sender, e);
//调用模版定义的默认实现方法.如需扩展,请直接在此编程.
this.PrintClick_DefaultImpl(sender,e);
}
然后扩展事件,选择打印模板参照ID
public void GetPrintData(object sender, DataCallBackEventArgs args)
{
DataSet returnDS = null;
switch (args.PrintTemplateID)
{
//打印参照ID
case "2be726e2-1285-4a8f-a278-95880a4a2b0c":
{
returnDS = this.GetDataPrint();
}
break;
default:
{
returnDS = this.GetDataPrint();
}
break;
}
args.ReturnData = returnDS;
}
直接从UIModel里取数据,不用另select
private DataSet GetDataPrint()
{
DataSet returnDataSet = new DataSet();
DataTable tableTest = new DataTable();
tableTest.Columns.Add("BLWorkerInfo0914_WID");
tableTest.Columns.Add("BLWorkerInfo0914_WName");
tableTest.Columns.Add("BLWorkerInfo0914_Telephoto");
tableTest.Columns.Add("BLWorkerInfo0914_Org_Name");
tableTest.Columns.Add("BLWorkerInfo0914_InTime");
tableTest.Columns.Add("BLWorkerInfo0914_OutTime");
//BLWorkerInfo0914Record header = this.CurrentModel.BLWorkerInfo0914.FocusedRecord;
foreach (BLWorkerInfo0914Record header in this.CurrentModel.BLWorkerInfo0914.Records)
{
DataRow row = tableTest.NewRow();
row["BLWorkerInfo0914_WID"] = header.WID;
row["BLWorkerInfo0914_WName"] = header.WName;
row["BLWorkerInfo0914_Telephoto"] = header.Telephoto;
row["BLWorkerInfo0914_Org_Name"] = header.Org_Name;
row["BLWorkerInfo0914_InTime"] = header.InTime;
row["BLWorkerInfo0914_OutTime"] = header.OutTime;
tableTest.Rows.Add(row);
}
returnDataSet.Tables.Add(tableTest);
return returnDataSet;
}
之前必须在UIForm里启用打印事件
列表打印基本就和单据打印一样,只是取数据时,另外select出来,而不是直接在UIModel里取
private DataSet GetDataPrint()
{
#region 获取选择行id
IList<IUIRecord> recs = null;
recs = UIRuntimeHelper.Instance.GetSelectRecordFromCache(this.CurrentModel.Views[0]);
if (recs.Count == 0 || recs == null)
{
throw new Exception("没有选中记录");
return null;
}
//id串
StringBuilder IDS = new StringBuilder(200);
IDS.Append(" 0 ");
//当选择多行数据时,每一行数据都要打印
foreach (IUIRecord record in recs)
{
IDS.Append(",");
IDS.Append(record["ID"]);
}
#endregion
DataSet returnDs = new DataSet();
StringBuilder sb = new StringBuilder(200);
//在UBF里找到实体后,切换视图,可以得到OQL查询代码,一段一段摘下来
sb.Append(" select BLWorkerInfo0914.WID as BLWorkerInfo0914_WID, ");
sb.Append("BLWorkerInfo0914.WName as BLWorkerInfo0914_WName, ");
sb.Append("BLWorkerInfo0914.Telephoto as BLWorkerInfo0914_Telephoto, ");
sb.Append("BLWorkerInfo0914.InTime as BLWorkerInfo0914_InTime, ");
sb.Append("BLWorkerInfo0914.OutTime as BLWorkerInfo0914_OutTime, ");
sb.Append("BLWorkerInfo0914.Org.Name as BLWorkerInfo0914_Org_Name ");
sb.Append("from UFIDA::U9::CBO::LW::BLWorkerInfo0914_MLProject::BLWorkerInfo0914 as BLWorkerInfo0914
");
sb.Append("where BLWorkerInfo0914.ID in ( " + IDS + " ) ");
UFSoft.UBF.Business.EntityViewQuery query = new EntityViewQuery();
returnDs = query.ExecuteDataSet(query.CreateQuery(sb.ToString()), null);
return returnDs;
}