ReportViewer中修改rdlc图表中显示的数据
将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 = "=\"小学总人员\"& Fields!小学总人员.Value";
XmlNode xmlnode2 = xs[1].ChildNodes.Item(0);
xmlnode2.InnerText = "=\"初中总人员\"& Fields!初中总人员.Value";
xmlnode2.InnerXml = "=\"初中总人员\"& Fields!初中总人员.Value";
XmlNode xmlnode3 = xs[2].ChildNodes.Item(0);
xmlnode3.InnerText = "=\"高中总人员\"& Fields!高中总人员.Value";
xmlnode3.InnerXml = "=\"高中总人员\"& 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图表中显示的数据的更多相关文章
- 修改excel图表中的“系列一”
修改excel图表中的"系列一" 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://zhidao.baidu.com/question/153915 ...
- 如何在vue中修改动态标签中的样式和修改组件库样式
vue中修改动态标签中的样式和修改组件库样式 因为vue中的标签在渲染的时候,都会给标签加上id 所以你想在<style lang="scss" scoped>直接修改 ...
- 使用spring:aop中修改增强方法中的参数
大家都知道,在增强方法中,使用jp.getArgs()[index]可以获取传进来的参数,但是参数传进来之后,怎么改变它的值呢? 因为jp.getArgs()[index]获取到的只是数据的备份,所以 ...
- 关于怎么在CSDN中修改代码行中字体的颜色
先吐槽一下自己的心路历程吧,自己现在也是在CSDN中发表了自己好几篇的原创博文,但每一篇博文自己总感觉怪怪的,就是说不出自己哪里有毛病呢,知道今天恍然大悟,原来自己的代码行真心丑的要死,没有呈现出在编 ...
- Flash图表控件FusionCharts如何在图表中显示标识和图片
在FusionCharts的图表中显示外部商标 使用FusionCharts之后,用户可以在运行时加载需要在图表中显示的外部标识/图片/图像.这个标识可以GIF / JPEG / PNG或SWF文件格 ...
- Flex中如何通过showAllDataTips属性使鼠标移动到图表时显示所有的数据Tips的例子
原文 http://blog.minidx.com/2008/11/10/1616.html 接下来的例子演示了Flex中如何通过showAllDataTips属性,使鼠标移动到图表时显示所有的数据T ...
- Android app图标总是显示默认的机器人图标,且在manifest文件的application中修改无效...
问题描述:我使用的开发工具是eclipse,Android app默认的图标是一个机器人,如下图所示 现在我要将app的图标修改成另外一个图标: 探索过程: 首先想到修改Manifest文件中的app ...
- iOS7中修改StatusBar的显示颜色
iOS7中修改StatusBar的显示颜色 效果图如下: 在iOS7中想手动修改statusBar的颜色,第一步需要做的就是在plist文件中设置View controller-based statu ...
- 系统管理模块_部门管理_改进_抽取添加与修改JSP页面中的公共代码_在显示层抽取BaseAction_合并Service层与Dao层
系统管理模块_部门管理_改进1:抽取添加与修改JSP页面中的公共代码 commons.jspf <%@ page language="java" import="j ...
随机推荐
- Java,Android 项目导入Eclipse常见错误
一.导入的jar包不存在: 右键工程属性查看: 导入的第三方jar包不存在: 解决方法: 删除该jar包,得到该jar包并存至本地,再导入该jar包 二.中文字符乱码: 解决方法: 右键项目属性: 修 ...
- 全面分析Java的垃圾回收机制
Java的堆是一个运行时数据区,类的实例(对象)从中分配空间.Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new.newarray.anewarray和mult ...
- .NET程序的简单编译原理
1.不管是什么程序,最终的执行官是CPU,而CPU只认识1和0的机器码. 2.我们现在写的一般是高级语言写的程序.CPU是不认识我们用高级语言写的源代码的,那应该怎么办才能让CPU执行我们写好的程序尼 ...
- 计算机网络(8)-----TCP报文段的首部格式
TCP报文段的首部格式 概述 TCP报文段首部的前20个字节是固定的,因此TCP首部的最小长度是20字节. 源端口和目标端口 各占2个字节,分别写入源端口号和目的端口号. 序列号 占4个字节,表示本报 ...
- Spring(2)
Spring中的IOC和DI容器的概述 IOC(Inversion of control):其思想是反转资源获取的方向,传统的资源查找方式要求组件向容器发出请求查找资源作为回应,容器适时的返回资源 而 ...
- 作业3(PSP表格)
PSP2.1 Personal Software Process Stages Time(min) Planning 计划 11 Estimate 估计 ...
- Get the current user permission level on a list item with ecmascript 分类: Sharepoint 2015-07-14 14:13 7人阅读 评论(0) 收藏
To Check current users permissions using Ecmascript\Javascript client object model SharePoint 2010. ...
- win7下安装Sass和compass
由于项目需要我们使用到sass来编译css文件.本人在win7下开发 由于国内安装sass遇到了一些困难,后来不得不网查询,后来终于解决了,这里介绍一下 1.要安装sass环境必须要先安装rubyIn ...
- js动画之多物体运动
多个物体这不能使用一个定时器了,要给每个物体一个定时器 <!DOCTYPE html> <html lang="en"> <head> < ...
- IE关闭兼容性视图
不知道什么时候,ie8的“兼容性视图设置”变成了灰色,如图: 今天通过设置组策略,终以解决了这个问题: ie8的兼容性视图设置灰色的解决办法:运行gpedit.msc--用户配置/计算机配置--管理 ...