using System;
using System.Data;
using System.IO;
using DevExpress.XtraEditors;
using FastReport;
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Gs.DevApp.DevFrm.Rpt
{
public partial class RptPreview : XtraForm
{
private readonly string _rptParameter;
public RptPreview(string rptParameter)
{
_rptParameter = rptParameter;
InitializeComponent();
Text = _rptParameter + "报表查看:";
getRptData();
}
///
/// 读取报表数据
///
private void getRptData()
{
var _obj = new
{
rptParameter = _rptParameter
};
try
{
var strJson = UtilityHelper.HttpPost("", "Report/GetRptData",
JsonConvert.SerializeObject(_obj));
var _job = JObject.Parse(strJson);
var rtnCode = _job["rtnCode"].ToString();
if (int.Parse(rtnCode) > 0)
{
//模板
var report = new Report();
var buffer = (byte[])_job["rtnData"]["reportTemplateData"];
using (var Stream = new MemoryStream(buffer))
{
report.Load(Stream);
}
//主表
var array = new JArray();
foreach (var a in _job["rtnData"]["zb"]) array.Add(a);
var _zb =
JsonConvert.DeserializeObject(
array.ToString());
_zb.TableName = "zb";
//明细表1
var array1 = new JArray();
foreach (var a in _job["rtnData"]["mx1"]) array1.Add(a);
var _mx1 =
JsonConvert.DeserializeObject(
array1.ToString());
_mx1.TableName = "mx1";
//明细表2
var array2 = new JArray();
foreach (var a in _job["rtnData"]["mx2"]) array1.Add(a);
var _mx2 =
JsonConvert.DeserializeObject(
array2.ToString());
_mx2.TableName = "mx2";
//加到数据集中
var ds = new DataSet();
ds.Tables.Add(_zb);
ds.Tables.Add(_mx1);
ds.Tables.Add(_mx2);
report.RegisterData(ds);
report.Preview = previewControl1;
report.Prepare();
report.ShowPrepared();
}
else
{
MsgHelper.Warning("提示:" + _job["rtnMsg"]);
}
}
catch (Exception ex)
{
MsgHelper.Warning("提示:" + ex.Message);
}
}
}
}