将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. CheckLogin

    # encoding: utf-8 # Creator:耿亚月 Creation time:2017-1-1 # Modifier:耿亚月 Modification time:2017-1-2 #fi ...

  2. RPM

    1.安装RPM 使用-ivh选项即可,能查看安装信息和进度. 例如: #RPM -ivh XXX.rpm RPM升级与更新,使用-Uvh选项或者-Fvh选项,两者略有区别. -Uvh选项:后面接的软件 ...

  3. 从HTML到HTML

    从HTML到HTML 当你在使用一些模板软件,如Thymeleaf的时候,了解web的标准,HTML家族的内部是十分重要的,至少如果你想知道自己在做什么的时候. 问题是,每个人都知道他们正在使用一些技 ...

  4. UIScrollView无法滚动的解决办法及UIScrollView的代理(delegate)

    1•如果UIScrollView无法滚动,可能是以下原因: Ø没有设置contentSize ØscrollEnabled = NO Ø没有接收到触摸事件:userInteractionEnabled ...

  5. Excel 行列转置 解决竖向拉,字母跟着递增的问题

    今天工作中遇到需要将Excel行列转置涉及到的数据单元格一共几千个 查询网上说可以通过复制粘贴单元格,粘贴选项中转置一项实现,但是所涉及的sheet页中,数据格式和单元格格式各不一样,转置失败! 怎么 ...

  6. 苹果公布WWDC2016时间 并做了个程序员情怀网页

    新浪手机讯 4月19日上午消息,苹果公司今日正式确定2016年全球开发者大会(WWDC)开幕时间:6月13-17日,并做了个非常有意思的代码风格页面. 网友戏称这个页面只有程序员们才能看懂,它的首页是 ...

  7. vpn是什么?手机vpn是什么?

    vpn是什么?手机vpn是什么? vpn是什么?手机vpn是什么? vpn是什么?手机vpn是什么?VPN全称是Virtual Private Network,也就是虚拟专用网的意思.很多人不知道VP ...

  8. widows下node.js环境搭建及运行js

    昨天刚刚开始学习node.js,网上一些教程不是很清楚,所以总结一下我的经验. 1.安装. 安装省略,就到官网上去下载安装一下就好.安装完成之后,打开cmd,输入"path",查看 ...

  9. java 中的SimpleDateFormat、Date函数以及字符串和Date类型互转

    SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类.它允许进行格式化(日期 -> 文本).解析(文本 -> 日期)和规范化. SimpleDateFor ...

  10. IOS框架和服务

    在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法. iOS为应用程序开发提供了许多可使用的框架 ...