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;
          }
            至于如何GetReportColumns和RemoveColumnFromRdlc,那就很簡單了,就是一個操作xml對象的過程。比方說:
          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();
            這個方法終于成功了。

            附:rdlc文件的xml一段結(jié)構(gòu)

            xml結(jié)構(gòu)
          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">

          文章來源:http://www.cnblogs.com/wangdetian168/archive/2008/09/03/1283351.html
          posted on 2010-09-29 13:28 sanmao 閱讀(330) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 南木林县| 沁源县| 伊吾县| 武强县| 吉木萨尔县| 河津市| 阳信县| 隆安县| 长子县| 灵石县| 郓城县| 蕉岭县| 洱源县| 高阳县| 塔河县| 高雄县| 民和| 松原市| 昆山市| 宜兰市| 宁陵县| 安义县| 民和| 大邑县| 吉安市| 正定县| 六盘水市| 彭泽县| 福海县| 福州市| 亚东县| 漳州市| 隆德县| 辽中县| 江北区| 昭苏县| 松原市| 临猗县| 项城市| 卫辉市| 平顶山市|