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