C#页面代码
if (!IsPostBack)
            {
                DataTable dt = DataEnt.QueryData.GetData();
                dt.TableName = "tableName";
                Hashtable hastab = new Hashtable();
                hastab.Add("ID", "ID");
                hastab.Add("MENT_CODE", "MENT_CODE");
                hastab.Add("DB_VALUE", "DB_VALUE");
                hastab.Add("CH_NAME", "CH_NAME");
                hastab.Add("MENT_TYPE", "MENT_TYPE");                ReportViewer1.Reset();
                this.ReportViewer1.LocalReport.LoadReportDefinition(CreateReportXmlObject.GenerateRdlc(dt, hastab));
                ReportViewer1.LocalReport.DataSources.Clear();
                this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource(dt.TableName, dt));                //this.ReportViewer1.LocalReport.Refresh();
            }
生成报表代码
public static MemoryStream GenerateRdlc(DataTable sourceDataTable, Hashtable heardCHName)
        {
            string Font = "宋体";
            string detailFontSize = "2pt";
            string headerFontSize = "3pt";
            string width = "9.35cm";            XmlDocument doc = new XmlDocument();
            doc.Load(AppDomain.CurrentDomain.BaseDirectory + "InitReportXml.xml");
            XmlNode xn = doc.GetElementsByTagName("DataSource")[0];//获取DataSource节点
            xn.Attributes["Name"].Value = "DummyDataSource";//设置属性Name为DummyDataSource            xn = doc.GetElementsByTagName("rd:DataSourceID")[0];//rd:DataSourceID节点
            xn.InnerText = Guid.NewGuid().ToString();//只是节点文本为GUID            xn = doc.GetElementsByTagName("rd:ReportID")[0];//获取到rd:ReportID节点
            xn.InnerText = Guid.NewGuid().ToString();            XmlNode dsElement = doc.GetElementsByTagName("DataSet")[0];//获取DataSet并赋值属性Name
            dsElement.Attributes["Name"].Value = sourceDataTable.TableName;            XmlNode dsnElement = doc.GetElementsByTagName("DataSourceName")[0];
            dsnElement.InnerText = "DummyDataSource";            XmlNode dsNameElement = doc.GetElementsByTagName("rd:DataSetName")[0];
            dsNameElement.InnerText = "DataSet1";            XmlNode tbNameElement = doc.GetElementsByTagName("rd:TableName")[0];
            tbNameElement.InnerText = "DataSet1" + sourceDataTable.TableName;            XmlNode tableElement = doc.GetElementsByTagName("Table")[0];
            tableElement.Attributes["Name"].Value = "table"+sourceDataTable.TableName;            XmlNode tableDsNameElement = doc.GetElementsByTagName("DataSetName")[0];//设置table 的DataSetName
            tableDsNameElement.InnerText = sourceDataTable.TableName;            #region 报表主体设置            //获取Details\TableRows\TableRow\TableCells
            XmlNode detailsTableCellsNode = doc.GetElementsByTagName("Details")[0].ChildNodes[0].ChildNodes[0].ChildNodes[0];            //获取Header\TableRows\TableRow\TableCells
            XmlNode headerTableCellsNode = doc.GetElementsByTagName("Header")[0].ChildNodes[0].ChildNodes[0].ChildNodes[0];            //获取TableColumns
            XmlNode tableColumnsNode = doc.GetElementsByTagName("TableColumns")[0];            //获取Footer\TableRows\TableRow\TableCells
            XmlNode footerTableCellsNode = doc.GetElementsByTagName("Footer")[0].ChildNodes[0].ChildNodes[0].ChildNodes[0];            XmlNode fieldsElement = doc.GetElementsByTagName("Fields")[0];
            foreach (DataColumn col in sourceDataTable.Columns)
            {
                #region 添加DataSet和添加DataSet字段信息
                XmlElement fieldElement = doc.CreateElement("Field");
                fieldElement.SetAttribute("Name", col.ColumnName);
                fieldsElement.AppendChild(fieldElement);                XmlElement dataFieldElement = doc.CreateElement("DataField");
                dataFieldElement.InnerText = col.ColumnName;
                fieldElement.AppendChild(dataFieldElement);                XmlElement typeNameElement = doc.CreateElement("rd:TypeName");
                typeNameElement.InnerText = col.DataType.ToString();
                fieldElement.AppendChild(typeNameElement);
                #endregion                #region Detail
                XmlElement detailTableCell = doc.CreateElement("TableCell");
                detailsTableCellsNode.AppendChild(detailTableCell);                XmlElement detailReportItems = doc.CreateElement("ReportItems");
                detailTableCell.AppendChild(detailReportItems);                XmlElement detailTextbox = doc.CreateElement("Textbox");
                detailTextbox.SetAttribute("Name", col.ColumnName);
                detailReportItems.AppendChild(detailTextbox);                XmlElement detailDefaultName = doc.CreateElement("rd:DefaultName");
                detailDefaultName.InnerText = col.ColumnName;
                detailTextbox.AppendChild(detailDefaultName);
               
                XmlElement detailCanGrow = doc.CreateElement("CanGrow");
                detailCanGrow.InnerText = "true";
                detailTextbox.AppendChild(detailCanGrow);                XmlElement detailValue = doc.CreateElement("Value");
                detailValue.InnerText = "=Fields!"+col.ColumnName+".Value";
                detailTextbox.AppendChild(detailValue);
                #endregion                #region     HEADER
                XmlElement headerTableCell = doc.CreateElement("TableCell");
                headerTableCellsNode.AppendChild(headerTableCell);                XmlElement headerReportItems = doc.CreateElement("ReportItems");
                headerTableCell.AppendChild(headerReportItems);                XmlElement headerTextbox = doc.CreateElement("Textbox");
                headerTextbox.SetAttribute("Name", col.ColumnName + "1");
                headerReportItems.AppendChild(headerTextbox);                XmlElement headerDefaultName = doc.CreateElement("rd:DefaultName");
                headerDefaultName.InnerText = col.ColumnName+"1";
                headerTextbox.AppendChild(headerDefaultName);               
                XmlElement headerCanGrow = doc.CreateElement("CanGrow");
                headerCanGrow.InnerText = "true";
                headerTextbox.AppendChild(headerCanGrow);                XmlElement headerValue = doc.CreateElement("Value");
                headerValue.InnerText = heardCHName[col.ColumnName].ToString();
                headerTextbox.AppendChild(headerValue);
                #endregion                #region tableColumn
                XmlElement tableColumn = doc.CreateElement("TableColumn");
                tableColumnsNode.AppendChild(tableColumn);
                XmlElement Width = doc.CreateElement("Width");
                Width.InnerText = width;
                tableColumn.AppendChild(Width);
                #endregion                XmlElement footerTableCell = doc.CreateElement("TableCell");
                footerTableCellsNode.AppendChild(footerTableCell);                XmlElement footerReportItems = doc.CreateElement("ReportItems");
                footerTableCell.AppendChild(footerReportItems);                XmlElement footerTextbox = doc.CreateElement("Textbox");
                footerTextbox.SetAttribute("Name", col.ColumnName + "2");
                footerReportItems.AppendChild(footerTextbox);                XmlElement footerDefaultName = doc.CreateElement("rd:DefaultName");
                footerDefaultName.InnerText = col.ColumnName+"2";
                footerTextbox.AppendChild(footerDefaultName);                XmlElement footerCanGrow = doc.CreateElement("CanGrow");
                footerCanGrow.InnerText = "true";
                footerTextbox.AppendChild(footerCanGrow);                XmlElement footerValue = doc.CreateElement("Value");
                footerTextbox.AppendChild(footerValue);
            }            MemoryStream ms = new MemoryStream();
            XmlSerializer serializer = new XmlSerializer(typeof(XmlDocument));
            serializer.Serialize(ms, doc);
            ms.Position = 0;
            string path = AppDomain.CurrentDomain.BaseDirectory + "Orders.rdlc";
            doc.Save(path);
            return ms;            #endregion
        }