在列表的工具栏上添加打印按钮,实现打印
代码如下:
一,
using System;
using System.Collections.Generic;
using System.Text;
using UFSoft.UBF.UI.Custom;
using UFSoft.UBF.UI.IView;
using UFSoft.UBF.UI.ControlModel;
using UFSoft.UBF.UI.WebControlAdapter;
using System.Collections.Specialized;
using UFSoft.UBF.UI.MD.Runtime;
using UFSoft.UBF.UI.WebControls.Association;
using UFSoft.UBF.UI.Controls;
using UFSoft.UBF.UI.WebControls.ClientCallBack;
using UFSoft.UBF.UI.WebControls.Association.Adapter;
using UFSoft.UBF.UI.WebControls;
using System.Data;
using UFSoft.UBF.UI.ActionProcess;
using UFSoft.UBF.ExportService;
using System.Web.UI.WebControls.WebParts;
using UFSoft.UBF.Business;
using UFIDA.U9.SM.KENT.JR.ShipBListUIExpand;
using UFSoft.UBF.UI.Engine.Builder;
using UFIDA.U9.MFG.MO.BL.hduzh.BLPackageListBListUIModel;
namespace UFIDA.U9.MO.BL.LW.BLPackageListBListPrint
{
public class BLPackageListBListPrint : UFSoft.UBF.UI.Custom.ExtendedPartBase
{
private IPart uiPart;
BLPackageListBListUIFormWebPart BLPackageListBListWebPart;
public override void AfterInit(IPart Part, EventArgs e)
{
base.AfterInit(Part, e);
uiPart = Part;
BLPackageListBListWebPart = (BLPackageListBListUIFormWebPart)Part;
//功能区加按钮
//IUFButton btnPrint = new UFWebButtonAdapter();
//btnPrint.Text = "打印";
//btnPrint.ID = "btnBLPackageListPrint";
//btnPrint.AutoPostBack = true;
//IUFCard card = (IUFCard)Part.GetUFControlByName(Part.TopLevelContainer, "Card0");
//card.Controls.Add(btnPrint);
//CommonFunction.Layout(card, btnPrint, 2, 0);
//btnPrint.Click += new EventHandler(btnPrint_Click);
//工具栏加按钮
IUFButton btnBLPackageListBListPrint = new UFWebButtonAdapter();
btnBLPackageListBListPrint.ID = "btnPackageListBListPrint";
btnBLPackageListBListPrint.AutoPostBack = true;
IUFToolbar _Toolbar = (IUFToolbar)BLPackageListBListWebPart.FindControl("Toolbar1");
btnBLPackageListBListPrint = UIControlBuilder.BuilderToolbarButton(_Toolbar, "True", "btnPackageListBListPrint", "True", "True", 45, 28, "5", "", true, false, "36BA88E0-FC28-402e-B9BA-3745A6771687", "36BA88E0-FC28-402e-B9BA-3745A6771687", "9307E981-85AA-4f19-ADB7-340D159F4A01");
UIControlBuilder.SetButtonAccessKey(btnBLPackageListBListPrint);
btnBLPackageListBListPrint.UIModel = BLPackageListBListWebPart.Model.ElementID;
btnBLPackageListBListPrint.Action = "";
btnBLPackageListBListPrint.Text = "打印";
((UFWebToolbarAdapter)_Toolbar).Items.Add(btnBLPackageListBListPrint as System.Web.UI.WebControls.WebControl);
btnBLPackageListBListPrint.Click += new EventHandler(btnPrint_Click);
}
/// <summary>
/// 打印事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void btnPrint_Click(object sender, EventArgs e)
{
//数据收集,绑定,否则会没打印记录
BLPackageListBListWebPart.DataCollect();
BLPackageListBListWebPart.IsDataBinding = true;
BLPackageListBListWebPart.IsConsuming = false;
IExportSettings settings = ExportServiceFactory.GetInstance().CreateExportSettingsObject();
//打印元数据管理的实体KEY,该目录下有多个打印模板
settings.PrintTemplateCatalogType = "UFIDA.U9.MFG.MO.BL.LW.BLPackageListPrint";
settings.UserDataCallBack = new DataCallBackHandle(this.GetPrintData);
UIActionEventArgs ex = new UIActionEventArgs();
ex.Tag = settings;
UFIDA.U9.UI.Commands.CommandFactory.DoCommand("OnPrint", (BaseAction)uiPart.Action, sender, ex);
}
/// <summary>
/// 打印模板
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
private void GetPrintData(object sender, DataCallBackEventArgs args)
{
DataSet ds = null;
switch (args.PrintTemplateID)
{
case "83fc203c-e348-4585-9a44-ab7c667de496":
{
ds = this.GetDataPrint();
}
break;
default:
ds = this.GetDataPrint();
break;
}
args.ReturnData = ds;
}
private DataSet GetDataPrint()
{
#region 获取选择行id
IList<IUIRecord> recs = null;
recs = UIRuntimeHelper.Instance.GetSelectRecordFromCache(this.uiPart.Model.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(Convert.ToInt64(record["MainID"]) + 1);
}
#endregion
DataSet returnDs = new DataSet();
StringBuilder sb = new StringBuilder(200);
//在UBF里找到实体后,切换视图,可以得到OQL查询代码,一段一段摘下来
sb.Append(" select BLPackageListLine.DocLineNo as BLPackageListLine_DocLineNo ");
sb.Append(", BLPackageListLine.ItemMaster.Name as BLPackageListLine_ItemMaster_Name ");
sb.Append(", BLPackageListLine.Type as BLPackageListLine_Type ");
sb.Append(", BLPackageListLine.Spec as BLPackageListLine_Spec ");
sb.Append(", BLPackageListLine.Color as BLPackageListLine_Color ");
sb.Append(", BLPackageListLine.Uom.Name as BLPackageListLine_Uom_Name ");
sb.Append(", BLPackageListLine.OrderQty as BLPackageListLine_OrderQty ");
sb.Append(", BLPackageListLine.PackQty as BLPackageListLine_PackQty ");
sb.Append(", BLPackageListLine.Packs as BLPackageListLine_Packs ");
sb.Append(", BLPackageListLine.ItemDesc.Length as BLPackageListLine_ItemDesc_Length ");
sb.Append(", BLPackageListLine.ItemDesc.Width as BLPackageListLine_ItemDesc_Width ");
sb.Append(", BLPackageListLine.ItemDesc.Height as BLPackageListLine_ItemDesc_Height ");
sb.Append(", BLPackageListLine.ItemDesc.PackVolume as BLPackageListLine_ItemDesc_PackVolume ");
sb.Append(", BLPackageListLine.ItemDesc.TotalVolume as BLPackageListLine_ItemDesc_TotalVolume ");
sb.Append(", BLPackageListLine.ItemDesc.PackNetWeight as BLPackageListLine_ItemDesc_PackNetWeight ");
sb.Append(", BLPackageListLine.ItemDesc.TotalNetWeight as BLPackageListLine_ItemDesc_TotalNetWeight ");
sb.Append(", BLPackageListLine.ItemDesc.PackGrossWeight as BLPackageListLine_ItemDesc_PackGrossWeight ");
sb.Append(", BLPackageListLine.ItemDesc.TotalGrossWeight as BLPackageListLine_ItemDesc_TotalGrossWeight ");
sb.Append(", BLPackageListLine.ItemDesc.ProductType as BLPackageListLine_ItemDesc_ProductType ");
sb.Append(", BLPackageListLine.ItemDesc.PackDesc as BLPackageListLine_ItemDesc_PackDesc ");
sb.Append(" from UFIDA::U9::MO::BL::hduzh::BLPackageListBE::BLPackageListLine as BLPackageListLine ");
sb.Append(" where BLPackageListLine.ID in (" + IDS + " ) ");
UFSoft.UBF.Business.EntityViewQuery query = new EntityViewQuery();
returnDs = query.ExecuteDataSet(query.CreateQuery(sb.ToString()), null);
return returnDs;
}
}
}
二,添加的引用截图如附件
三,配置webpartextend.webconfig文件
<ExtendedPart parentPartFullName="UFIDA.U9.MFG.MO.BL.hduzh.BLPackageListBListUIModel.BLPackageListBListUIFormWebPart"
extendedPartFullName="UFIDA.U9.MO.BL.LW.BLPackageListBListPrint.BLPackageListBListPrint"
extendedPartAssemblyName="UFIDA.U9.MO.BL.LW.BLPackageListBListPrint">
</ExtendedPart>