代码改变世界

改造了一下以前自己用Delphi开的web报表控件(针对主表、子表、孙表的扩展)

2012-02-03 15:35  佳明  阅读(537)  评论(0编辑  收藏  举报

     因为最近的项目里面涉及到一张三层关系的报表,原来用的控件达不到这个需求,这时有想到用grid++ 但对这个不是很熟,我们公司有在用是CS的,后来想想还是自己花点功夫把原来Delphi开发的插件在扩展一下就可以了,距离上次开发这个控件当中已经近4年半载没去碰dephi了,这下又得从新去下了哥开发环境安装了,和安装了fastreport插件重新把原来的代码打开进行烦心新添加了参数和函数。虽然有点生疏但查了下资料还是能马上应手的,折腾几个小时终于搞定并测试了中间也有点小插曲,但还是比较顺利的。

    delphi开发界面如图

 

   模版设计

  

  

   调用后打印如图

 

    打印预览页面代码

 

View Code
  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 }