| this.reportViewer1.LocalReport.LoadReportDefinition(m_rdl); this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("MyData", m_dataSet.Tables[0])); this.reportViewer1.RefreshReport();这是自动生成xml的代码: private MemoryStream GenerateRdl(List<string> allFields, List<string> selectedFields) { MemoryStream ms = new MemoryStream(); RdlGenerator gen = new RdlGenerator(); gen.AllFields = allFields; gen.SelectedFields = selectedFields; gen.WriteXml(ms); ms.Position = 0; return ms; } 这是完全ReportDefinition的一部分定义: namespace Rdl { using System.Xml.Serialization; /**//// <remarks/> [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.42")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)] [System.Xml.Serialization.XmlRootAttribute(Namespace=_ "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition", IsNullable=false)] public partial class Report { private object[] itemsField; |
| public MemoryStream GenerateRdlc() { XmlDocument sourceDoc = new XmlDocument(); string path = AppDomain.CurrentDomain.BaseDirectory + "Test/OrderList.rdlc"; sourceDoc.Load(path); Hashtable reportColumns = GetReportColumns(sourceDoc.LastChild); //just remove for (int i = 0; i < reportColumns.Count; i++) { if (!FindReportCoulmns(reportColumns[i].ToString())) { RemoveColumnFromRdlc(sourceDoc.LastChild, i); } } MemoryStream ms = new MemoryStream(); XmlSerializer serializer = new XmlSerializer(typeof(XmlDocument)); serializer.Serialize(ms, sourceDoc); ms.Position = 0; return ms; } |
| private Hashtable GetReportColumns(XmlNode root) { Hashtable cols = new Hashtable(); //XmlNamespaceManager s=new XmlNamespaceManager( XmlNode cells = FindChildNode(root,"Body/ReportItems/Table/Header/TableRows/TableRow/TableCells"); for (int i = 0; i < cells.ChildNodes.Count; i++) { XmlNode cell =FindChildNode( cells.ChildNodes[i],"ReportItems/Textbox/DataElementName"); cols[i] = cell.InnerText; } return cols; } |
| this.ReportViewer1.LocalReport.LoadReportDefinition(this.Report.GenerateRdlc()); this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", result.Tables[0])); this.ReportViewer1.LocalReport.Refresh(); |
| 1<?xml version="1.0" encoding="utf-8"?> 2<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"> 3 <DataSources> 4 <DataSource Name="ConnectionString"> 5 <ConnectionProperties> 6 <ConnectString /> 7 <DataProvider>SQL</DataProvider> 8 </ConnectionProperties> 9 <rd:DataSourceID>073016a7-6cb0-4e06-a6fd-f5882a039188</rd:DataSourceID> 10 </DataSource> 11 </DataSources> 12 <BottomMargin>2.5cm</BottomMargin> 13 <RightMargin>2.5cm</RightMargin> 14 <PageWidth>21cm</PageWidth> 15 <rd:DrawGrid>true</rd:DrawGrid> 16 <InteractiveWidth>21cm</InteractiveWidth> 17 <rd:GridSpacing>0.25cm</rd:GridSpacing> 18 <rd:SnapToGrid>true</rd:SnapToGrid> 19 <Body> 20 <ColumnSpacing>1cm</ColumnSpacing> 21 <ReportItems> 22 <Chart Name="chart1"> |