复制代码 代码如下:

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你需要改的格式是哪个地方

您可能感兴趣的文章:

  • C#实现微信公众号群发消息(解决一天只能发一次的限制)实例分享
  • C#微信公众号开发之接收事件推送与消息排重的方法
  • .net微信公众号开发之准备工作
  • .NET微信公众号开发之公众号消息处理
  • 图文介绍报表与企业微信公众号集成方案
声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。