时间:2016-02-15 21:55 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【asp.net 动态生成rdlc报表(原创)】,下面是详细的讲解!
asp.net 动态生成rdlc报表(原创)
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;
}
关于asp.net 动态生成rdlc报表(原创)的用户互动如下:
相关问题:asp.net rdlc报表打印问题
答:代码没有任何问题!是正确的. 打第二个的时候,出现的老是第一个收费的数据?是指什么. 应该你的rdlc报表的第二个设置的还是this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("FPXX", dtTemp1));第一个数据源.你查查看。不然... >>详细
相关问题:RDLC 报表 (ASP.NET)读取数据库中二进制图片
答:自己弄 >>详细
相关问题:asp.net设计rdlc报表
答:在rdlc中使,用分组统计,类似示例请见,reporting service中自带的示例AdventureWorks Sample Reports项目中的Company Sales.rdl >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
