万能报表打印时解析富文本控件的错误解决方法
如题:格式文本控件绑定了单据的富文本控件,打印会出现乱码。解决方法为,绑定的时候选择htnl,绑定字段绑定单据的富文本字段,然后还需要编写单据/列表代码:
如下:
/// <summary>
/// 准备打印万能报表模板单据数据
/// </summary>
/// <param name="e"></param>
public override void OnPrepareDevPrintData(PreparePrintDevDataEventArgs e)
{
base.OnPrepareDevPrintData(e);
/////对应的分录相同的标记
Entity headentity = this.View.BusinessInfo.GetEntity("FBillHead");
if (headentity == null)
return;
////表格兼容处理
if (!e.DataSource.Tables.Contains(headentity.TableName))
return;
//重建数据表字段,并修改类型
DataTable dtEntity = e.DataSource.Tables[headentity.TableName];
//字段1
DataColumn myDataColum = new DataColumn();
myDataColum.DataType = System.Type.GetType("System.String");
myDataColum.ColumnName = "F_RichText1";
dtEntity.Columns.Add(myDataColum);
//字段2
DataColumn myDataColum2 = new DataColumn();
myDataColum2.DataType = System.Type.GetType("System.String");
myDataColum2.ColumnName = "F_BZXXRichText1"; ;
dtEntity.Columns.Add(myDataColum2);
for (int i = 0; i < dtEntity.Rows.Count; i++)
{
//转换富文本成html
byte[] aWrite = (byte[])dtEntity.Rows[i]["F_RichText"];//意见
byte[] aWrite2 = (byte[])dtEntity.Rows[i]["F_BZXXRichText"];//说明
if (!aWrite.IsNullOrEmpty())
{
dtEntity.Rows[i]["F_RichText1"] = Encoding.UTF8.GetString(aWrite);//意见
}
if (!aWrite2.IsNullOrEmpty())
{
dtEntity.Rows[i]["F_BZXXRichText1"] = Encoding.UTF8.GetString(aWrite2);//说明
}
}
dtEntity.Columns.Remove("F_RichText");
dtEntity.Columns.Remove("F_BZXXRichText");
myDataColum.ColumnName = "F_RichText";
myDataColum2.ColumnName = "F_BZXXRichText";
}
就可以了,后续如有其他关于万能报表的解决方法,欢迎大家分享。
万能报表打印时解析富文本控件的错误解决方法
本文2024-09-16 18:42:00发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-23835.html