1、就是页眉上不再显示标头了,为什么这样做,下面会讲到。3:然后,来改造我们的核心方法每个表的数据在写入前,先写一行列标题。这个标题,也替代了我们之前的页眉标题。并且每一行数据的第一列,也就是f0,写入表名。1classclsDyCrystalReportCore23/4将传入的datatable转换成报表模板所需要的datatable5数据全部转换为string6/summary7paramname=dt来源表8tblName各单表名称报表模板所需要的datatable1112publicDataTabledtx(DataTabledt,StringtblName,StringfldsName)
2、131415StringoneRow=;16DataSet1.BigTatableDataTabledtx1=newDataSet1.BigTatableDataTable();1718objectobjobjectdt.Columns.Count;19/特别注意:所选择的表的列的数目需=Bigtable的字段数目20/请自行填写保护代码2122/先列名称写到每个表的第一行23dtx1.Rows.Add(dtx1.NewRow();24/第一行的第一列写表的名称25dtx1.Rows00tblName;26/切割列名称字符串,写入第一行后面的位置27for(inti0;fldsName.Spl
3、it(newchar,).Length;i+)282930dtx1.Rows0i+1)i;313233/写入数据34dt.Rows.Count35363738/每一行的第一列,也就是f0,写入表名称。39dtx1.Rowsi+1040/写数据41jdt.Columns.Countj+)4243oneRow+,dt.Rowsij.ToString();44if(dt.Rowsij.ToString()=)45dtx1.Rowsi+1j+146else4748495051returndtx1;52534:好了,来看我们的前端代码。usingSystem;System.Collections.Gen
4、eric;System.ComponentModel;System.Data;System.Text;System.Windows.Forms;CrystalDecisions.Shared;CrystalDecisions.CrystalReports.Engine;CrystalDecisions.Windows.Forms;System.Data.OleDb;namespaceDyCrystalReportDemopartialForm1:FormForm1()InitializeComponent();privatevoidbutton1_Click(objectsender,Even
5、tArgse)connstrProvider=Microsoft.Jet.OLEDB.4.0;DataSource=System.Threading.Thread.GetDomain().BaseDirectory+bbtcrall.mdb/打开数据库连接OleDbConnectioncnOleDbConnection(connstr);dtxAllDataTable();/容纳所有数据OleDbDataAdapterdaOleDbDataAdapter();clsDyCrystalReportCorexCoreclsDyCrystalReportCore();/注意各表的字段数目不能大于我们
6、设定的最大数目!/请自行添加错误保护和对象释放代码/第1个表dt1OleDbDataAdapter(SELECT*FromTest1_1,cn);da.Fill(dt1);xCore.dtx(dt1,表1编号,姓名,发信日期,其他);dtxAll.Merge(dtx1);/第2个表,注意,这个表可以从不同的数据源获取!/重新初始化Test1_2xCore.dtx(dt1,表2编号,姓名,入职日期,日期1,日期2/第3个表,注意,这个表可以从不同的数据源获取!54555657Test_45859表3年份,地区,指标,最大值,最小值60616263ReportDocumentmyReportRep
7、ortDocument();64stringreportPathSystem.Threading.Thread.GetDomain().BaseDirectorycrystalreport1.rpt65myReport.Load(reportPath);6667/绑定数据集6869myReport.SetDataSource(dtxAll);7071crystalReportViewer1.ReportSourcemyReport;72crystalReportViewer1.RefreshReport();7374757677注意,我们用了将所有的数据合并在一个datatable里,从而达到我们开始设定的目标。5:执行一下,是如下效果,有点乱,是吧?6:这个时候f0就派上用场啦,在模板上增加一个f0的组,如下图所示。7:运行起来,帅多了吧?格子有点难看,这个就不再本文中讨论了。以后专门讲讲这个画格子的问题。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1