asp.net 动态生成rdlc报表(原创)

 更新时间:2021年9月22日 10:19  点击:1842
复制代码 代码如下:

string cCount = "";
string dCount = "";
string jCount = "";
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string id = Request.QueryString["OrderID"] == null ? "1" : Request.QueryString["OrderID"].ToString();
SqlConnection con = new SqlConnection("server=CHENZQ;uid=sa;pwd=luca623;database=luca");
SqlDataAdapter sda = new SqlDataAdapter("select * from view_Order where C_orderID='" + id + "'", con);
DataSet ds = new DataSet();
sda.Fill(ds);
cCount = ds.Tables[0].Rows[0]["C_CTime"].ToString();
dCount = ds.Tables[0].Rows[0]["C_TTime"].ToString();
jCount = ds.Tables[0].Rows[0]["C_DTime"].ToString();
//这段代码是最重要
ReportViewer1.Reset();
this.ReportViewer1.LocalReport.LoadReportDefinition(GenerateRdlc());
ReportViewer1.LocalReport.DataSources.Clear();
//Orders_DataTable1 数据源名字必须和此报表原绑定的数据源名相同
this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("Orders_DataTable1", ds.Tables[0]));
this.ReportViewer1.LocalReport.Refresh();
}
}
//这个方法就是自定义报表的样式
public MemoryStream GenerateRdlc()
{
XmlDocument sourceDoc = new XmlDocument();
string path = AppDomain.CurrentDomain.BaseDirectory + "Orders.rdlc";
//c_CTime = ds.Tables[0].Rows[0]["C_CTime"].ToString();
sourceDoc.Load(path);
//下面就是xml操作了 没必要看我的 根据自己的需求而做
XmlNode xHeader = sourceDoc.ChildNodes.Item(1).ChildNodes.Item(13).ChildNodes.Item(1).ChildNodes.Item(0).ChildNodes.Item(4);
XmlNode xCells = xHeader.ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(0);
//建设期
XmlNode xmlCell = xCells.ChildNodes.Item(1);
XmlElement xeCol = sourceDoc.CreateElement("ColSpan");
xeCol.InnerText = cCount;
xeCol.InnerXml = cCount;
xmlCell.InnerXml += xeCol.OuterXml;
XmlNode xmlCellValue = xmlCell.ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(4);
xmlCellValue.InnerXml = "建设期";
xmlCellValue.InnerText = "建设期";
XmlNode xnRemove;
for (int i = 0; i <int.Parse(cCount) - 1; i++)
{
xnRemove = xCells.ChildNodes.Item(2);
xCells.RemoveChild(xnRemove);
}
//投产期
XmlNode xmlCellT = xCells.ChildNodes.Item(2);
XmlElement xeColT = sourceDoc.CreateElement("ColSpan");
xeColT.InnerText = dCount;
xeColT.InnerXml = dCount;
xmlCellT.InnerXml += xeColT.OuterXml;
XmlNode xmlCellValueT = xmlCellT.ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(4);
xmlCellValueT.InnerXml = "投产期";
xmlCellValueT.InnerText = "投产期";
for (int j = 0; j < int.Parse(dCount) - 1; j++)
{
xnRemove = xCells.ChildNodes.Item(3);
xCells.RemoveChild(xnRemove);
}
//生产期
XmlNode xmlCellC = xCells.ChildNodes.Item(3);
XmlElement xeColC = sourceDoc.CreateElement("ColSpan");
xeColC.InnerText = jCount.ToString();
xeColC.InnerXml = jCount.ToString();
xmlCellC.InnerXml += xeColC.OuterXml;
XmlNode xmlCellValueC = xmlCellC.ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(4);
xmlCellValueC.InnerXml = "生产期";
xmlCellValueC.InnerText = "生产期";
for (int j = 0; j < int.Parse(jCount) - 1; j++)
{
xnRemove = xCells.ChildNodes.Item(4);
xCells.RemoveChild(xnRemove);
}
MemoryStream ms = new MemoryStream();
XmlSerializer serializer = new XmlSerializer(typeof(XmlDocument));
serializer.Serialize(ms, sourceDoc);
ms.Position = 0;
return ms;
}

技巧 可以先在报表里自己设计好需要的格式 用
XmlDocument sourceDoc = new XmlDocument();
string path = AppDomain.CurrentDomain.BaseDirectory + "Orders.rdlc";
然后用sourceDoc .save()保存生成xml
可以看到此xml你需要改的格式是哪个地方
[!--infotagslink--]

相关文章

  • C#在Winform开发中使用Grid++报表

    这篇文章主要介绍了C#在Winform开发中使用Grid++报表,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • ireport数据表格报表的简单使用

    这篇文章给大家介绍了如何画一个报表模板,这里介绍下画表格需要用到的组件,文中通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-10-26
  • C# 创建报表过程详解

    本文给大家介绍的是使用vs2012 c#创建报表的全部过程的记录,十分的详细,有需要的小伙伴可以参考下。...2020-06-25
  • 使用Ajax更新ASP.Net MVC项目中的报表对象方法

    下面小编就为大家分享一篇使用Ajax更新ASP.Net MVC项目中的报表对象方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-09-22
  • Asp.net 自带报表的使用详解

    最近公司的功能需要使用报表,用的是微软自带的报表,谈一谈我们的做法,希望可以给想学习的人一些指导...2021-09-22
  • Web打印解决方案之普通报表打印功能

    这篇文章主要介绍了Web打印解决方案之普通报表打印功能的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-09-01
  • C#利用ReportViewer生成报表

    这篇文章主要为大家详细介绍了C#利用ReportViewer生成报表的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • asp.net水晶报表参数字段在代码中赋值的方法

    这篇文章主要介绍了asp.net水晶报表参数字段在代码中赋值的方法,实例分析了asp.net中水晶报表的使用技巧,需要的朋友可以参考下...2021-09-22
  • ASP.NET中水晶报表的使用方法详解

    这篇文章介绍了ASP.NET中水晶报表的使用方法,有需要的朋友可以参考一下...2021-09-22
  • 水晶报表图片不显示两种问题分析及解决方法

    水晶报表布置后里面的图片不显示的情况,分两种:一是:水晶报表工具栏上的图片不显示;二是:水晶报表中的的图片对象不显示,接下来将分别介绍解决方法,感兴趣的朋友可以了解下啊...2021-09-22
  • asp.net 动态生成rdlc报表(原创)

    因为公司需求 研究微软的Reportviewer 因为有许多特别要求所以动态调用 比较灵活 我的需求是 根据数据不同的合并表头 (参考了随心所欲的博客文档 再次表示感谢)...2021-09-22
  • 水晶报表asp.net的webform下基本用法实例

    这篇文章主要介绍了水晶报表asp.net的webform下基本用法,实例讲述了asp.net中水晶报表的创建与使用方法,非常具有实用价值,需要的朋友可以参考下...2021-09-22
  • VS2010 水晶报表的使用方法

    这篇文章简单介绍下VS2010 水晶报表的使用方法,需要的朋友可以参考下...2021-09-22
  • asp.net中rdlc 合并行的方法

    要合并内容行,我想是不可能的,我上网找了N久,也没找到,囧...2021-09-22
  • php报表 jpgraph柱状图实例

    jpgraph是php教程中一个非常非常强大的第三方报表工具,据说能完成一切你想要的图形&hellip; 新手初识jpgraph肯定会遇到各种各样的问题,比如乱码什么的,本案例是jpgraph...2016-11-25
  • Python 实现自动化Excel报表的步骤

    这篇文章主要介绍了Python 实现自动化Excel报表的步骤,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-04-02
  • 在ASP.NET 2.0中操作数据之三十四:基于DataList和Repeater跨页面的主/从报表

    前面介绍了使用GridView实现跨页面的主/从报表,同样DataList和Repeater也可以实现相同功能。...2021-09-22
  • php与Open Flash Chart多报表切换例子

    Open Flash Chart多报表我们在许多的网站都会看到这个功能了,今天小编就来为各位介绍Open Flash Chart多报表使用方法吧 将生成好的JSON数据传递给前端,前端通过JS...2016-11-25
  • PHPexcel生成复杂的报表表头类例子

    PHPexcel是一款非常不错的excel表格操作php插件了,我们通常用它来生成excel文档或数据转换并导入到mysql数据库中,下面介绍的是PHPexcel生成复杂的报表表头类例子...2016-11-25
  • .NET中RDLC循环处理数据的应用分析

    本篇文章介绍了,.NET中RDLC循环处理数据的应用分析。需要的朋友参考下...2021-09-22