改造了一下以前自己用Delphi开的web报表控件(针对主表、子表、孙表的扩展)
2012-02-03 15:35 佳明 阅读(537) 评论(0) 编辑 收藏 举报因为最近的项目里面涉及到一张三层关系的报表,原来用的控件达不到这个需求,这时有想到用grid++ 但对这个不是很熟,我们公司有在用是CS的,后来想想还是自己花点功夫把原来Delphi开发的插件在扩展一下就可以了,距离上次开发这个控件当中已经近4年半载没去碰dephi了,这下又得从新去下了哥开发环境安装了,和安装了fastreport插件重新把原来的代码打开进行烦心新添加了参数和函数。虽然有点生疏但查了下资料还是能马上应手的,折腾几个小时终于搞定并测试了中间也有点小插曲,但还是比较顺利的。
delphi开发界面如图
模版设计
调用后打印如图
打印预览页面代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 //------------------------------------------------------------
2 // All Rights Reserved , Copyright (C) 2008 , Jamsoft , Ltd.
3 //------------------------------------------------------------
4
5 using System;
6 using System.Configuration;
7 using System.Data;
8 using System.Data.OleDb;
9 using System.Linq;
10 using System.Web;
11 using System.Web.Security;
12 using System.Web.UI;
13 using System.Web.UI.HtmlControls;
14 using System.Web.UI.WebControls;
15 using System.Web.UI.WebControls.WebParts;
16 using System.Xml.Linq;
17 using System.IO;
18
19 /// <remarks>
20 /// 报表
21 /// PrintView
22 ///
23 /// 修改纪录
24 ///
25 /// 版本:1.0 2009.07.22 LiangMingMing 创建代码
26 ///
27 /// 版本:1.0
28 /// <author>
29 /// <name>LiangMingMing</name>
30 /// <date>2009.07.22</date>
31 /// </author>
32 /// </remarks>
33 public partial class PrintView : System.Web.UI.Page
34 {
35 //****************************************************************************************************
36 //* *
37 //* 定义公共变量 *
38 //* *
39 //****************************************************************************************************
40
41 //****************************************************************************************************
42 //* *
43 //* 初始化 *
44 //* *
45 //****************************************************************************************************
46
47 #region private void PageOnLoad() 页面初次加载时的动作
48 /// <summary>
49 /// 页面初次加载时的动作
50 /// </summary>
51 private void PageOnLoad()
52 {
53 this.txtFilePath.Value = "1.fr3";
54 //获取参数
55 this.GetParamter();
56 String scriptString = "\n TestAX.XML_DataSet = document.all('txtDataSet').value;";
57 scriptString += "\n TestAX.XML_SubDataSet = document.all('txtSubDataSet').value;";
58 scriptString += "\n TestAX.XML_SubSubDataSet = document.all('txtSubSubDataSet').value;";
59 scriptString += "\n TestAX.SubRelation = document.all('txtSubRelation').value;";
60 scriptString += "\n TestAX.SubSubRelation = document.all('txtSubSubRelation').value;";
61 scriptString += "\n TestAX.SubMasterFields = document.all('txtSubMasterFields').value;";
62 scriptString += "\n TestAX.SubSubMasterFields = document.all('txtSubSubMasterFields').value;";
63 scriptString += "\n TestAX.UserName = document.all('txtUserName').value;";
64 scriptString += "\n TestAX.SubUserName = document.all('txtSubUserName').value;";
65 scriptString += "\n TestAX.SubSubUserName = document.all('txtSubSubUserName').value;";
66 scriptString += "\n TestAX.PathString = document.all('txtFilePath').value;";
67 //ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "PassSucceed", "alert('提示信息: 审核通过.');",
68 Page.ClientScript.RegisterStartupScript(this.GetType(), "OnInitControl", "<script language='JavaScript'type='text/javascript'>" + scriptString + "\n</script>");
69 }
70 #endregion
71
72 //****************************************************************************************************
73 //* *
74 //* 操作方法 *
75 //* *
76 //****************************************************************************************************
77
78 #region private void GetParamter() 读取参数
79 /// <summary>
80 /// 读取参数
81 /// Session["_DSReport"]:数据集 主表(不可缺少)、【子表】可省略、【孙表】可省略
82 /// SubRelation 子表对应主表的关系 值:"12"(代表第一个为主表),"23"(代表第三个为主表)
83 /// SuSubRelation 孙表对应主表的关系 值:"13"(代表第一个为主表),"23"(代表第二个为主表)
84 /// SubMasterFields 子表对应主表的字段
85 /// SubSubMasterFields 孙表对应主表的字段
86 /// UserName 主表数据集在FastReport设计Data显示的名称
87 /// SubUserName 子表数据集在FastReport设计Data显示的名称
88 /// SubSubUserName 孙表数据集在FastReport设计Data显示的名称
89 /// </summary>
90 private void GetParamter()
91 {
92 if (Request.QueryString["SubRelation"] != null)
93 {
94 this.txtSubRelation.Value = Request.QueryString["SubRelation"].ToString();
95 }
96 if (Request.QueryString["SubSubRelation"] != null)
97 {
98 this.txtSubSubRelation.Value = Request.QueryString["SubSubRelation"].ToString();
99 }
100 if (Request.QueryString["SubMasterFields"] != null)
101 {
102 this.txtSubMasterFields.Value = Request.QueryString["SubMasterFields"].ToString();
103 }
104 if (Request.QueryString["SubSubMasterFields"] != null)
105 {
106 this.txtSubSubMasterFields.Value = Request.QueryString["SubSubMasterFields"].ToString();
107 }
108 if (Request.QueryString["UserName"] != null)
109 {
110 this.txtUserName.Value = Request.QueryString["UserName"].ToString();
111 }
112 if (Request.QueryString["SubUserName"] != null)
113 {
114 this.txtSubUserName.Value = Request.QueryString["SubUserName"].ToString();
115 }
116 if (Request.QueryString["SubSubUserName"] != null)
117 {
118 this.txtSubSubUserName.Value = Request.QueryString["SubSubUserName"].ToString();
119 }
120 DataSet dataSet = this.Session["_DSReport"] as DataSet;
121 if (dataSet != null)
122 {
123 if (dataSet.Tables.Count > 0)
124 {
125 this.txtDataSet.Value = Common.DataSetToString(dataSet.Tables[0]);
126 }
127 if (dataSet.Tables.Count > 1)
128 {
129 this.txtSubDataSet.Value = Common.DataSetToString(dataSet.Tables[1]);
130 }
131 if (dataSet.Tables.Count > 2)
132 {
133 this.txtSubSubDataSet.Value = Common.DataSetToString(dataSet.Tables[2]);
134 }
135 }
136 }
137 #endregion
138
139 //****************************************************************************************************
140 //* *
141 //* 事件方法 *
142 //* *
143 //****************************************************************************************************
144
145 #region protected void Page_Load(object sender, EventArgs e)加载
146 /// <summary>
147 /// 加载
148 /// </summary>
149 /// <param name="sender"></param>
150 /// <param name="e"></param>
151 protected void Page_Load(object sender, EventArgs e)
152 {
153 if (!Page.IsPostBack)
154 {
155 // 页面初次加载时的动作
156 this.PageOnLoad();
157 }
158 }
159 #endregion
160 }
2 // All Rights Reserved , Copyright (C) 2008 , Jamsoft , Ltd.
3 //------------------------------------------------------------
4
5 using System;
6 using System.Configuration;
7 using System.Data;
8 using System.Data.OleDb;
9 using System.Linq;
10 using System.Web;
11 using System.Web.Security;
12 using System.Web.UI;
13 using System.Web.UI.HtmlControls;
14 using System.Web.UI.WebControls;
15 using System.Web.UI.WebControls.WebParts;
16 using System.Xml.Linq;
17 using System.IO;
18
19 /// <remarks>
20 /// 报表
21 /// PrintView
22 ///
23 /// 修改纪录
24 ///
25 /// 版本:1.0 2009.07.22 LiangMingMing 创建代码
26 ///
27 /// 版本:1.0
28 /// <author>
29 /// <name>LiangMingMing</name>
30 /// <date>2009.07.22</date>
31 /// </author>
32 /// </remarks>
33 public partial class PrintView : System.Web.UI.Page
34 {
35 //****************************************************************************************************
36 //* *
37 //* 定义公共变量 *
38 //* *
39 //****************************************************************************************************
40
41 //****************************************************************************************************
42 //* *
43 //* 初始化 *
44 //* *
45 //****************************************************************************************************
46
47 #region private void PageOnLoad() 页面初次加载时的动作
48 /// <summary>
49 /// 页面初次加载时的动作
50 /// </summary>
51 private void PageOnLoad()
52 {
53 this.txtFilePath.Value = "1.fr3";
54 //获取参数
55 this.GetParamter();
56 String scriptString = "\n TestAX.XML_DataSet = document.all('txtDataSet').value;";
57 scriptString += "\n TestAX.XML_SubDataSet = document.all('txtSubDataSet').value;";
58 scriptString += "\n TestAX.XML_SubSubDataSet = document.all('txtSubSubDataSet').value;";
59 scriptString += "\n TestAX.SubRelation = document.all('txtSubRelation').value;";
60 scriptString += "\n TestAX.SubSubRelation = document.all('txtSubSubRelation').value;";
61 scriptString += "\n TestAX.SubMasterFields = document.all('txtSubMasterFields').value;";
62 scriptString += "\n TestAX.SubSubMasterFields = document.all('txtSubSubMasterFields').value;";
63 scriptString += "\n TestAX.UserName = document.all('txtUserName').value;";
64 scriptString += "\n TestAX.SubUserName = document.all('txtSubUserName').value;";
65 scriptString += "\n TestAX.SubSubUserName = document.all('txtSubSubUserName').value;";
66 scriptString += "\n TestAX.PathString = document.all('txtFilePath').value;";
67 //ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(), "PassSucceed", "alert('提示信息: 审核通过.');",
68 Page.ClientScript.RegisterStartupScript(this.GetType(), "OnInitControl", "<script language='JavaScript'type='text/javascript'>" + scriptString + "\n</script>");
69 }
70 #endregion
71
72 //****************************************************************************************************
73 //* *
74 //* 操作方法 *
75 //* *
76 //****************************************************************************************************
77
78 #region private void GetParamter() 读取参数
79 /// <summary>
80 /// 读取参数
81 /// Session["_DSReport"]:数据集 主表(不可缺少)、【子表】可省略、【孙表】可省略
82 /// SubRelation 子表对应主表的关系 值:"12"(代表第一个为主表),"23"(代表第三个为主表)
83 /// SuSubRelation 孙表对应主表的关系 值:"13"(代表第一个为主表),"23"(代表第二个为主表)
84 /// SubMasterFields 子表对应主表的字段
85 /// SubSubMasterFields 孙表对应主表的字段
86 /// UserName 主表数据集在FastReport设计Data显示的名称
87 /// SubUserName 子表数据集在FastReport设计Data显示的名称
88 /// SubSubUserName 孙表数据集在FastReport设计Data显示的名称
89 /// </summary>
90 private void GetParamter()
91 {
92 if (Request.QueryString["SubRelation"] != null)
93 {
94 this.txtSubRelation.Value = Request.QueryString["SubRelation"].ToString();
95 }
96 if (Request.QueryString["SubSubRelation"] != null)
97 {
98 this.txtSubSubRelation.Value = Request.QueryString["SubSubRelation"].ToString();
99 }
100 if (Request.QueryString["SubMasterFields"] != null)
101 {
102 this.txtSubMasterFields.Value = Request.QueryString["SubMasterFields"].ToString();
103 }
104 if (Request.QueryString["SubSubMasterFields"] != null)
105 {
106 this.txtSubSubMasterFields.Value = Request.QueryString["SubSubMasterFields"].ToString();
107 }
108 if (Request.QueryString["UserName"] != null)
109 {
110 this.txtUserName.Value = Request.QueryString["UserName"].ToString();
111 }
112 if (Request.QueryString["SubUserName"] != null)
113 {
114 this.txtSubUserName.Value = Request.QueryString["SubUserName"].ToString();
115 }
116 if (Request.QueryString["SubSubUserName"] != null)
117 {
118 this.txtSubSubUserName.Value = Request.QueryString["SubSubUserName"].ToString();
119 }
120 DataSet dataSet = this.Session["_DSReport"] as DataSet;
121 if (dataSet != null)
122 {
123 if (dataSet.Tables.Count > 0)
124 {
125 this.txtDataSet.Value = Common.DataSetToString(dataSet.Tables[0]);
126 }
127 if (dataSet.Tables.Count > 1)
128 {
129 this.txtSubDataSet.Value = Common.DataSetToString(dataSet.Tables[1]);
130 }
131 if (dataSet.Tables.Count > 2)
132 {
133 this.txtSubSubDataSet.Value = Common.DataSetToString(dataSet.Tables[2]);
134 }
135 }
136 }
137 #endregion
138
139 //****************************************************************************************************
140 //* *
141 //* 事件方法 *
142 //* *
143 //****************************************************************************************************
144
145 #region protected void Page_Load(object sender, EventArgs e)加载
146 /// <summary>
147 /// 加载
148 /// </summary>
149 /// <param name="sender"></param>
150 /// <param name="e"></param>
151 protected void Page_Load(object sender, EventArgs e)
152 {
153 if (!Page.IsPostBack)
154 {
155 // 页面初次加载时的动作
156 this.PageOnLoad();
157 }
158 }
159 #endregion
160 }