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); } } } }