将rdlc以xml的格式打开,修改里面的数据,实现方式如下:

public MemoryStream GenerateRdlc()
    {

XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load("E:/RSTest/Report/Report4.rdlc");
        XmlNodeList xList = xmlDoc.ChildNodes;
        XmlNode xNode = xList.Item(1);

XmlNodeList xx = xNode.ChildNodes;

StringBuilder sb = new StringBuilder();
        for (int i = 0; i < xx.Count; i++)
        {
            if (xx[i].Name.ToLower() == "body")
            {
                XmlNode xnBody = xx[i];
                XmlNodeList xnBodyChildList = xnBody.ChildNodes;
                for (int j = 0; j < xnBodyChildList.Count; j++)
                {
                    if (xnBodyChildList[j].Name == "ReportItems")
                    {
                        XmlNode xHeader = xnBodyChildList[j];
                        XmlElement xe = xHeader["Chart"];
                        XmlNodeList xTable = xe.ChildNodes;

for (int k = 0; k < xTable.Count; k++)
                        {
                            if (xTable[k].Name == "SeriesGroupings")
                            {
                                XmlNode xnseries = xTable[k];//SeriesGrouping
                                XmlNodeList xs = xnseries.ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes;
                                XmlNode xmlnode1 = xs[0].ChildNodes.Item(0);
                                xmlnode1.InnerText = "=\"小学总人员\"& Fields!小学总人员.Value";
                                xmlnode1.InnerXml = "=\"小学总人员\"&amp; Fields!小学总人员.Value";

XmlNode xmlnode2 = xs[1].ChildNodes.Item(0);
                                xmlnode2.InnerText = "=\"初中总人员\"& Fields!初中总人员.Value";
                                xmlnode2.InnerXml = "=\"初中总人员\"&amp; Fields!初中总人员.Value";

XmlNode xmlnode3 = xs[2].ChildNodes.Item(0);
                                xmlnode3.InnerText = "=\"高中总人员\"& Fields!高中总人员.Value";
                                xmlnode3.InnerXml = "=\"高中总人员\"&amp; Fields!高中总人员.Value";
                            }

if (xTable[k].Name == "ChartData")
                            {
                                XmlNode xnseries = xTable[k];//SeriesGrouping
                                XmlNodeList xs = xnseries.ChildNodes;
                                XmlNode xmlnode1 = xs[0].ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(0);
                                xmlnode1.InnerText = "=Sum(Fields!小学总人员.Value)";

//xs[0].ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(1).Name=DataLabel
                                XmlNode xmlnode11 = xs[0].ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(1).ChildNodes.Item(0);
                                xmlnode11.InnerText = "=FormatPercent(Fields!小学总人员.Value/(Fields!小学总人员.Value+Fields!初中总人员.Value+Fields!高中总人员.Value))";
                                XmlNode xmlnode2 = xs[1].ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(0);
                                xmlnode2.InnerText = "=Sum(Fields!初中总人员.Value)";

XmlNode xmlnode22 = xs[1].ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(1).ChildNodes.Item(0);
                                xmlnode22.InnerText = "=FormatPercent(Fields!初中总人员.Value/(Fields!小学总人员.Value+Fields!初中总人员.Value+Fields!高中总人员.Value))";

XmlNode xmlnode3 = xs[2].ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(0);
                                xmlnode3.InnerText = "=Sum(Fields!高中总人员.Value)";

XmlNode xmlnode33 = xs[2].ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(1).ChildNodes.Item(0);
                                xmlnode33.InnerText = "=FormatPercent(Fields!高中总人员.Value/(Fields!小学总人员.Value+Fields!初中总人员.Value+Fields!高中总人员.Value))";

}
                        }
                    }
                }
            }
        }
     
        xmlDoc.Save("E:/RSTest/Report/Report4.rdlc");

MemoryStream ms = new MemoryStream();
        XmlSerializer serializer = new XmlSerializer(typeof(XmlDocument));
        serializer.Serialize(ms, xmlDoc);
        ms.Position = 0;
        return ms;
    }

调用上面的方法

protected void Button1_Click(object sender, EventArgs e)
    {
       SqlConnection connection = new SqlConnection(connString);
        connection.Open();
        string c = "select sum(小学.学校总数) as 小学总数,sum(初中.学校总数) as 初中总数,sum(高中.学校总数)  as 高中总数, sum(小学.总人员) as 小学总人员,sum(初中.总人员) as 初中总人员,sum(高中.总人员)  as 高中总人员, sum(小学.学生电脑总量) as 小学学生电脑总量,sum(初中.学生电脑总量) as 初中学生电脑总量,sum(高中.学生电脑总量)  as 高中学生电脑总量, sum(小学.在编人数) as 小学在编人数,sum(初中.在编人数) as 初中在编人数,sum(高中.在编人数)  as 高中在编人数, sum(小学.教师电脑总量) as 小学教师电脑总量,sum(初中.教师电脑总量) as 初中教师电脑总量,sum(高中.教师电脑总量)  as 高中教师电脑总量, sum(小学.多媒体教室) as 小学多媒体教室,sum(初中.多媒体教室) as 初中多媒体教室,sum(高中.多媒体教室)  as 高中多媒体教室, sum(小学.计算机网络教室) as 小学计算机网络教室,sum(初中.计算机网络教室) as 初中计算机网络教室,sum(高中.计算机网络教室)  as 高中计算机网络教室, sum(小学.建有独立校园网站学校) as 小学建有独立校园网站学校,sum(初中.建有独立校园网站学校) as 初中建有独立校园网站学校,sum(高中.建有独立校园网站学校)  as 高中建有独立校园网站学校, sum(小学.建有独立校园网络学校) as 小学建有独立校园网络学校,sum(初中.建有独立校园网络学校) as 初中建有独立校园网络学校,sum(高中.建有独立校园网络学校)  as 高中建有独立校园网络学校, sum(小学.硬件投入) as 小学硬件投入,sum(初中.硬件投入) as 初中硬件投入,sum(高中.硬件投入)  as 高中硬件投入, sum(小学.软件投入) as 小学软件投入,sum(初中.软件投入) as 初中软件投入,sum(高中.软件投入)  as 高中软件投入, sum(小学.电教示范学校) as 小学电教示范学校,sum(初中.电教示范学校) as 初中电教示范学校,sum(高中.电教示范学校)  as 高中电教示范学校, sum(小学.会制作网页和动画教室) as 小学会制作网页和动画教室,sum(初中.会制作网页和动画教室) as 初中会制作网页和动画教室,sum(高中.会制作网页和动画教室)  as 高中会制作网页和动画教室, sum(小学.班级通学校) as 小学班级通学校,sum(初中.班级通学校) as 初中班级通学校,sum(高中.班级通学校)  as 高中班级通学校, sum(小学.班班多媒体学校) as 小学班班多媒体学校,sum(初中.班班多媒体学校) as 初中班班多媒体学校,sum(高中.班班多媒体学校)  as 高中班班多媒体学校, sum(小学.县区班班通) as 小学县区班班通,sum(初中.县区班班通) as 初中县区班班通,sum(高中.县区班班通)  as 高中县区班班通 from 小学,初中,高中 where 小学.城市=初中.城市 and 初中.城市=高中.城市";//绑定rdlc文件的数据集
        SqlCommand cmd = new SqlCommand(c, connection);
        SqlDataAdapter da = new SqlDataAdapter(cmd);

DataTable ds = new DataTable();
        da.Fill(ds);
        ReportViewer1.LocalReport.DataSources.Clear();
        ReportViewer1.LocalReport.LoadReportDefinition(GenerateRdlc());
        ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSet1_DataTable1", ds));
        ReportViewer1.LocalReport.Refresh();    }

目前还尚存在问题,通过浏览器查看时,首次点击按钮修改后的数据显示不出来,可以在浏览器中点击“清除会话Cookie”后在点击按钮,修改后的数据会显示出来,也可以关闭浏览器重新打开,修改后的数据会显示出来,这种思路也许不是正确的,希望有知道的大侠看到本篇文章时能给出指导意见!

ReportViewer中修改rdlc图表中显示的数据的更多相关文章

  1. 修改excel图表中的“系列一”

    修改excel图表中的"系列一" 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://zhidao.baidu.com/question/153915 ...

  2. 如何在vue中修改动态标签中的样式和修改组件库样式

    vue中修改动态标签中的样式和修改组件库样式 因为vue中的标签在渲染的时候,都会给标签加上id 所以你想在<style lang="scss" scoped>直接修改 ...

  3. 使用spring:aop中修改增强方法中的参数

    大家都知道,在增强方法中,使用jp.getArgs()[index]可以获取传进来的参数,但是参数传进来之后,怎么改变它的值呢? 因为jp.getArgs()[index]获取到的只是数据的备份,所以 ...

  4. 关于怎么在CSDN中修改代码行中字体的颜色

    先吐槽一下自己的心路历程吧,自己现在也是在CSDN中发表了自己好几篇的原创博文,但每一篇博文自己总感觉怪怪的,就是说不出自己哪里有毛病呢,知道今天恍然大悟,原来自己的代码行真心丑的要死,没有呈现出在编 ...

  5. Flash图表控件FusionCharts如何在图表中显示标识和图片

    在FusionCharts的图表中显示外部商标 使用FusionCharts之后,用户可以在运行时加载需要在图表中显示的外部标识/图片/图像.这个标识可以GIF / JPEG / PNG或SWF文件格 ...

  6. Flex中如何通过showAllDataTips属性使鼠标移动到图表时显示所有的数据Tips的例子

    原文 http://blog.minidx.com/2008/11/10/1616.html 接下来的例子演示了Flex中如何通过showAllDataTips属性,使鼠标移动到图表时显示所有的数据T ...

  7. Android app图标总是显示默认的机器人图标,且在manifest文件的application中修改无效...

    问题描述:我使用的开发工具是eclipse,Android app默认的图标是一个机器人,如下图所示 现在我要将app的图标修改成另外一个图标: 探索过程: 首先想到修改Manifest文件中的app ...

  8. iOS7中修改StatusBar的显示颜色

    iOS7中修改StatusBar的显示颜色 效果图如下: 在iOS7中想手动修改statusBar的颜色,第一步需要做的就是在plist文件中设置View controller-based statu ...

  9. 系统管理模块_部门管理_改进_抽取添加与修改JSP页面中的公共代码_在显示层抽取BaseAction_合并Service层与Dao层

    系统管理模块_部门管理_改进1:抽取添加与修改JSP页面中的公共代码 commons.jspf <%@ page language="java" import="j ...

随机推荐

  1. 虚拟机启动linux系统报错,此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态

    在使用虚拟机启动linux的时候报错,如下: 已将该虚拟机配置为使用 64 位客户机操作系统.但是,无法执行 64 位操作. 此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态. ...

  2. js对特殊字符转义、时间格式化、获取URL参数

    /*特殊字符转义*/ function replace_html(str) { var str = str.toString().replace(/&/g, "&" ...

  3. javasript_数据结构和算法_栈

    //-----------------------------------存储结构为数组-------------------------------------------- function St ...

  4. onscroll

    var COUNT = 0, demo = document.getElementById('demo'); function testFn() {demo.innerHTML += 'testFN ...

  5. 【jQuery】百分比自适应屏幕轮播图特效

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. HPL/SQL与CDH5.4.7集成

    1.下载hplsql-0.3.13到本地并解压 2.修改plsql,为如下内容 #!/bin/bash export "HADOOP_CLASSPATH=/opt/cloudera/parc ...

  7. linux test 命令使用

    1. 关于某个文件名的『类型』侦测(存在与否),如 test -e filename -e 该『文件名』是否存在?(常用) -f 该『文件名』是否为文件(file)?(常用) -d 该『文件名』是否为 ...

  8. 扩展django的User的部分方法

    这做项目时发现django自带的User中的字段不够用,默认的auth_user表总共只有11个字段,如果需要更多的字段该怎么办,在网上搜了一下,有这么几种方法. 1. 直接修改django 源码,修 ...

  9. 【1】springmvc4 + servlet3 零配置全注解入门项目helloword

    自从servlet3.0支持注解,使得javaweb项目使用全注解成为可能. 注解化将成为javaweb的发展方向.包括spring去年推出的spring-boot也是全部使用注解. 代码:https ...

  10. JavaScript WEB页面调试

    不管我们开发什么项目,都需要使用调试.后端的调试比较简单.前端js调试稍微复杂了一点,但是也别怕,因为我们有很多调试前端js代码的浏览器工具.比如IE浏览器.firefox浏览器.chrome浏览器等 ...