• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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;
    }

    技巧 可以先在报表里自己设计好需要的格式 用
    XmlDocument sourceDoc = new XmlDocument();
    string path = AppDomain.CurrentDomain.BaseDirectory + "Orders.rdlc";
    然后用sourceDoc .save()保存生成xml
    可以看到此xml你需要改的格式是哪个地方
    您可能感兴趣的文章:
    • C#实现微信公众号群发消息(解决一天只能发一次的限制)实例分享
    • C#微信公众号开发之接收事件推送与消息排重的方法
    • .NET微信公众号开发之准备工作
    • .NET微信公众号开发之公众号消息处理
    • 图文介绍报表与企业微信公众号集成方案
    上一篇:asp.net 细说文件读写操作(读写锁)
    下一篇:无法将类型为“System.Web.UI.WebControls.HiddenField”的对象强制转换为类型的错误的解决
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

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