将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. [转]Bat脚本处理ftp超强案例解说

    Bat脚本处理ftp超强案例解说 转自:http://369369.blog.51cto.com/319630/842341   前言:   公司有几百台windows服务器,每次程序更新,如果是一台 ...

  2. 从.NET平台调用Win32 API

    MSDN文章<Microsoft Win32 to Microsoft .NET Framework API Map> 介绍了.net 类库对win32的封装 从.NET平台调用Win32 ...

  3. IO多路复用,实现多线程监听

    服务端 import socket sk1 = socket.socket() sk1.bind(('127.0.0.1',8001)) sk1.listen() sk2 = socket.socke ...

  4. IE9以下 placeholder兼容

    //input placeholder兼容!(function ($, doc, win) { $.fn.placeholder = function () { var i = doc.createE ...

  5. python时间格式化

    import timeprint time.time()输出的结果是:1279578704.6725271 但是这样是一连串的数字不是我们想要的结果,我们可以利用time模块的格式化时间的方法来处理: ...

  6. Bootstrap<基础九>辅助类

    Bootstrap 中的一些可能会派上用场的辅助类. 文本 以下不同的类展示了不同的文本颜色.如果文本是个链接鼠标移动到文本上会变暗: 类 描述   .text-muted "text-mu ...

  7. IIS7 404 模块 IIS Web Core 通知 MapRequestHandler 处理程序 StaticFile 错误代码 0x80070002

    <system.webServer> <!--添加--> <modules runAllManagedModulesForAllRequests="true&q ...

  8. java.lang.UnsupportedClassVersionError出错

    代码出错如下:java.lang.UnsupportedClassVersionError: cn/itcast/mybatis/first/MybatisFirst : Unsupported ma ...

  9. JS 数字,金额 用逗号 隔开(数字格式化)

    <script> function fmoney(s,n) { n = n > 0 && n <= 20 ? n : 2; s = parseFloat((s ...

  10. SoapUI中如何获取当前active环境

    // Get the current selected Environment def activeEnv = testRunner.testCase.testSuite.project.getAct ...