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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星火燎猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值