rdlc报表动态生成公共类

using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.HtmlControls;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Xml;

///   <summary>
/// DynamicReport 的摘要说明
///   </summary>
namespace  XNCJWC.Web
{
    
public   class  DynamicReport
    {
        
public   string  filename  =   "" ;
        
public  XmlDocument doc  =   null ;
        
public  XmlNode root  =   null ;
        
public  XmlNamespaceManager xnm  =   null ;
        
public   string  ns  =   "" ;
        
public  DynamicReport()
        {
            
//
            
// TODO: 在此处添加构造函数逻辑
            
//
        }
        
public  DynamicReport( string  filename)
        {
            ns 
=   " http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition " ;
            
this .filename  =  filename;
            doc 
=   new  XmlDocument();
            doc.Load(filename);
            root 
=  doc.DocumentElement;
            xnm 
=   new  XmlNamespaceManager(doc.NameTable);
            xnm.AddNamespace(
" rd " " http://schemas.microsoft.com/SQLServer/reporting/reportdesigner " );
            xnm.AddNamespace(
" default " , ns);
            xnm.PushScope();
        }
        
private  XmlNode CreateNode( string  nodename,  string  innertext)
        {
            XmlNode node 
=   null ;
            node 
=  doc.CreateNode(XmlNodeType.Element, nodename, ns);
            node.InnerText 
=  innertext;
            
return  node;
        }
        
private  XmlNode CreateNode( string  nodename)
        {
            XmlNode node 
=   null ;
            node 
=  doc.CreateNode(XmlNodeType.Element, nodename, ns);
            
return  node;
        }
        
public   void  AddParamter( string  name,  string  type,  string  prompt)
        {
            XmlNode node 
=   null ;
            XmlNode refCd 
=  root.SelectSingleNode( " //default:ReportParameters " , xnm);
            XmlElement docFrag 
=  doc.CreateElement( " ReportParameter " , ns);
            docFrag.SetAttribute(
" Name " , name);
            node 
=  doc.CreateNode(XmlNodeType.Element,  " DataType " , ns);
            node.InnerText 
=  type;
            docFrag.AppendChild(node);
            node 
=  doc.CreateNode(XmlNodeType.Element,  " Nullable " , ns);
            node.InnerText 
=   " true " ;
            docFrag.AppendChild(node);
            node 
=  doc.CreateNode(XmlNodeType.Element,  " Prompt " , ns);
            node.InnerText 
=  prompt;
            docFrag.AppendChild(node);
            refCd.InsertAfter(docFrag, refCd.LastChild);
            doc.Save(filename);

        }



        
public   void  AddTableColumn()
        {
            XmlNode refCd 
=  root.SelectSingleNode( " //default:Report//default:Body//default:ReportItems//default:Table//default:TableColumns " , xnm);
            XmlNode docFrag 
=  CreateNode( " TableColumn " );
            XmlNode width 
=  CreateNode( " Width " " 2.5cm " );
            docFrag.AppendChild(width);
            refCd.AppendChild(docFrag);
        }
        
// 动态增加详细列 
         public   void  AddDetailsCell( string  ColName,  string  ColValue)
        {
            XmlNode refCd 
=  root.SelectSingleNode( " //default:Report//default:Body//default:ReportItems//default:Table//default:Details//default:TableRows//default:TableRow//default:TableCells " , xnm);
            XmlElement docFrag 
=  doc.CreateElement( " TableCell " , ns);
            XmlNode reportitems 
=  CreateNode( " ReportItems " );
            XmlElement textbox 
=  doc.CreateElement( " Textbox " , ns);
            textbox.SetAttribute(
" Name " , ColName);
            XmlNode zindex 
=  CreateNode( " ZIndex " " 20 " );
            textbox.AppendChild(zindex);
            XmlNode style 
=  CreateNode( " Style " );
            textbox.AppendChild(style);
            XmlNode borderstyle 
=  CreateNode( " BorderStyle " );
            style.AppendChild(borderstyle);
            XmlNode defaul 
=  CreateNode( " Default " " Solid " );
            borderstyle.AppendChild(defaul);
            XmlNode textalign 
=  CreateNode( " TextAlign " " Center " );
            style.AppendChild(textalign);
            XmlNode PaddingLeft 
=  CreateNode( " PaddingLeft " " 2pt " );
            style.AppendChild(PaddingLeft);
            XmlNode PaddingBottom 
=  CreateNode( " PaddingBottom " " 2pt " );
            style.AppendChild(PaddingBottom);
            XmlNode FontFamily 
=  CreateNode( " FontFamily " " 宋体 " );
            style.AppendChild(FontFamily);
            XmlNode VerticalAlign 
=  CreateNode( " VerticalAlign " " Middle " );
            style.AppendChild(VerticalAlign);
            XmlNode PaddingTop 
=  CreateNode( " PaddingTop " " 2pt " );
            style.AppendChild(PaddingTop);
            XmlNode PaddingRight 
=  CreateNode( " PaddingRight " " 2pt " );
            style.AppendChild(PaddingRight);
            XmlNode cangrow 
=  CreateNode( " CanGrow " " true " );
            textbox.AppendChild(cangrow);
            XmlNode value 
=  CreateNode( " Value " , ColValue);
            textbox.AppendChild(value);
            reportitems.AppendChild(textbox);
            docFrag.AppendChild(reportitems);
            refCd.InsertAfter(docFrag, refCd.LastChild);
        }
        
// 动态增加表头
         public   void  AddTableHeaderCell( string  colname,  string  paramvalue)
        {
            XmlNode node 
=   null ;
            XmlNode refCd 
=  root.SelectSingleNode( " //default:Report//default:Body//default:ReportItems//default:Table//default:Header//default:TableRows//default:TableRow//default:TableCells " , xnm);
            XmlElement docFrag 
=  doc.CreateElement( " TableCell " , ns);
            XmlNode reportitems 
=  CreateNode( " ReportItems " );
            XmlElement textbox 
=  doc.CreateElement( " Textbox " , ns);
            textbox.SetAttribute(
" Name " , colname);
            XmlNode zindex 
=  CreateNode( " ZIndex " " 50 " );
            textbox.AppendChild(zindex);
            XmlNode style 
=  CreateNode( " Style " );
            XmlNode borderstyle 
=  CreateNode( " BorderStyle " );
            style.AppendChild(borderstyle);
            XmlNode defaul 
=  CreateNode( " Default " " Solid " );
            borderstyle.AppendChild(defaul);
            XmlNode textalign 
=  CreateNode( " TextAlign " " Center " );
            style.AppendChild(textalign);
            XmlNode PaddingLeft 
=  CreateNode( " PaddingLeft " " 2pt " );
            style.AppendChild(PaddingLeft);
            XmlNode PaddingBottom 
=  CreateNode( " PaddingBottom " " 2pt " );
            style.AppendChild(PaddingBottom);
            XmlNode FontFamily 
=  CreateNode( " FontFamily " " 宋体 " );
            style.AppendChild(FontFamily);
            
// XmlNode FontWeight = CreateNode("FontWeight", "700");
            
// style.AppendChild(FontWeight);
            XmlNode VerticalAlign  =  CreateNode( " VerticalAlign " " Bottom " );
            style.AppendChild(VerticalAlign);
            XmlNode PaddingTop 
=  CreateNode( " PaddingTop " " 2pt " );
            style.AppendChild(PaddingTop);
            XmlNode PaddingRight 
=  CreateNode( " PaddingRight " " 2pt " );
            style.AppendChild(PaddingRight);
            textbox.AppendChild(style);
            XmlNode cangrow 
=  CreateNode( " CanGrow " " true " );
            textbox.AppendChild(cangrow);
            XmlNode value 
=  CreateNode( " Value " , paramvalue);
            textbox.AppendChild(value);
            reportitems.AppendChild(textbox);
            docFrag.AppendChild(reportitems);
            refCd.InsertAfter(docFrag, refCd.LastChild);
        }
        
// 动态添加页眉
         public   void  AddTableHaderFirstRowSingleCell( string  colname,  string  paramvalue)
        {
            
// XmlNode node = null;
            
// XmlNode refCd = root.SelectSingleNode(" // default:Report // default:PageHeader", xnm);
             /// /XmlElement docFrag = doc.CreateElement("TableCell", ns);
             // node = CreateNode("ReportItems");
            
// XmlElement textbox = doc.CreateElement("Textbox", ns);
            
// textbox.SetAttribute("Name", colname);
            
// node.AppendChild(textbox);
            
// XmlNode zindex = CreateNode("ZIndex", "12");
            
// textbox.AppendChild(zindex);
            
// XmlNode style = CreateNode("Style");
            
// XmlNode borderstyle = CreateNode("BorderStyle");
            
// style.AppendChild(borderstyle);
            
// XmlNode defaul = CreateNode("Default", "Solid");
            
// borderstyle.AppendChild(defaul);
            
// XmlNode textalign = CreateNode("TextAlign", "Center");
            
// style.AppendChild(textalign);
            
// XmlNode PaddingLeft = CreateNode("PaddingLeft", "2pt");
            
// style.AppendChild(PaddingLeft);
            
// XmlNode PaddingBottom = CreateNode("PaddingBottom", "2pt");
            
// style.AppendChild(PaddingBottom);
            
// XmlNode FontFamily = CreateNode("FontFamily", "宋体");
            
// style.AppendChild(FontFamily);
            
// XmlNode FontWeight = CreateNode("FontWeight", "700");
            
// style.AppendChild(FontWeight);
            
// XmlNode VerticalAlign = CreateNode("VerticalAlign", "Bottom");
            
// style.AppendChild(VerticalAlign);
            
// XmlNode PaddingTop = CreateNode("PaddingTop", "2pt");
            
// style.AppendChild(PaddingTop);
            
// XmlNode PaddingRight = CreateNode("PaddingRight", "2pt");
            
// style.AppendChild(PaddingRight);
            
// textbox.AppendChild(style);
            
// XmlNode cangrow = CreateNode("CanGrow", "true");
            
// textbox.AppendChild(cangrow);
            
// XmlNode value = CreateNode("Value", paramvalue);
            
// textbox.AppendChild(value);
             /// /docFrag.AppendChild(node);
             // refCd.InsertAfter(docFrag, refCd.LastChild);
        }
    }

}


原文出处:http://www.cnblogs.com/hubcarl/archive/2009/05/10/1453494.html

posted @   星火燎猿*  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示