开发ReportViewer中遇到的一些问题

第一篇

1.每页显示多少行由Report的InteractiveSize-Height属性决定,规则是 height=行数*0.63492 每行的高度


2.如何显示表头,选择用xml格式打开report文件,在
 <TablixRowHierarchy>
          <TablixMembers>
            <TablixMember>
              <KeepWithGroup>After</KeepWithGroup>
              <RepeatOnNewPage>true</RepeatOnNewPage> //加上这句话就可以了。属性里找不到,只可以在这里加
            </TablixMember>
            <TablixMember>
              <Group Name="Details" />
            </TablixMember>
          </TablixMembers>
        </TablixRowHierarchy>
3.PageCountModel属性
在页面添加了ReportView控件后有一个PagecountModel属性,这个属性的有两个值,Actual和Estimate。
Actual是现实真实的具体页数
Estimate是也是预估的页面,后面有一个问号

4.如果通过页面里加载了这么
<LocalReport  ReportPath="Rdlc\CopyRecordRdlc.rdlc">
                                </LocalReport>
也就是在页面里reportViewer控件的右上角点三角加载的RDLC文件,这样在winform是没有问题的,但是在Web里会出现没有数据源的问题,正确办法是在查询按钮里加载 rvCopyRecord.LocalReport.ReportPath = @"Rdlc\CopyRecordRdlc.rdlc";
这样就不会有那个提示了

5.报表里增加参数,
在报表里增加总费用,在报表工具箱里参数文件夹下右键,新建参数AllCost,把这个参数拖到报表里,在页面传值,
 double allCost =0;
            ReportDataSource reportDataSource = GetData(out allCost);
            ReportParameter r = new ReportParameter("AllCost", allCost.ToString());
            rvCopyRecord.LocalReport.SetParameters(r);
这样就可以把总费用传入报表了

6.统计功能
必须在int或者decimal字段上菜可以加,其他的字段是first
选中报表的最后一行,选择增加Group Blow 在最下面增加一行,在GroupBy里输入一个无意义的参数,这样会只显示一行,如果选择有意义的字段会出现很多行(不知道为什么)。在右键最后一行的最后一列,选择Fx,进入表达式页面,选在Database,这里列出了所有可以统计的字段,int或者decimal是Sum其他的是FIrst,在Sum字段上双击,这样在上面的输入框里自动生成一个表达式,这样统计功能就生成了。

 

7.饼状图百分比,

饼状图里显示的时候显示百分比,默认的是显示的小数如0.2(vs2010),但是希望显示百分比,在series label propertys里有一个Number属性,在里面可以设置百分比属性,但是不知道是微软的bug还是我自己没有研究透,反正设置上了百分比不成功,每次打开又变成默认值,也就是小数,

提供2种方法显示百分比,

1),在饼状图上选择百分比数字,选择series label propertys,在label Data 里选择fx,在里面添加如下内容= FormatPercent(CountRows()/CountRows("PieChart"),2)(pieChart是你饼状图的名字,默认为Chart1).这样就会显示百分比了。

2),在series label propertys里选择number属性不生效,每次打开都变成default,但是柱状图里可以设置,通过比较xml文件发现了区别,用xml格式打开饼状图的xml文件,在ChartDataPoint节点下有一个ChartDataLabel节点,在里面加上如下代码 

<Style >
        <Format>0.00%</Format>
       </Style>

这样就可以显示为百分比了。

8.如何在饼状图里显示链接

如果想在各个比例上单击打开网页,然后传一个参数过去

在饼状图上选择标签然后选择series label propertys,在URL里面选择action,选择url,点fx,写入,="http://www.baidu.com?Id="+Fields!Paremare.Value.

注意在使用URL的时候必须在引用这个rdlc文件的地方加上如下的代码

rvCopyRecord.LocalReport.EnableHyperlinks = true;

否则编译的时候不报错,但是运行的时候报错

9.如何让饼状图百分比在饼的外面并显示连线

选择饼状图上的dataLable,然后选择右面的属性,在里面选择CustomerAttirbutes,设置pielabelstyle=outside,pielablecolor="color"这样就可以了

 10.使用subreport控件的问题,在父报表里放一个subreport控件,将reportName属性设置为需要显示的子报表的名字。

1)Data retrieval failed for the subreport, 'Subreport1', located at: D:\Work\报表开发\ReportService\ReportService.Web\Rdlc\ProductDetail.rdlc. Please check the log files for more information.

这个问题是因为没有给子报表提供数据源,

在显示报表的事件里添加  reportViewer1.LocalReport.SubreportProcessing += new SubreportProcessingEventHandler(LocalReport_SubreportProcessing);

 void LocalReport_SubreportProcessing(object sender, SubreportProcessingEventArgs e)
        {
            DataSet dataSet = null;

            try
            {
                // Load data from XML file
                ReportDataSource reportDataSource = GetData();
                // Supply a DataTable corresponding to each report dataset. The dataset name must match the name defined in the main report stream
                // (in the Name attribute of the <DataSets>\<DataSet> element.
                e.DataSources.Add(reportDataSource);
            }
            finally
            {
                if (dataSet != null)
                    dataSet.Dispose();
            }
        }

 
第二篇
 

问题1:

如何设置才能对表里的组进行强制分页, 比如一共100条记录,每页只显示10行,而且所有页都需要将表头打印出来(即表头重复打印)

 

答1:

1. 工具箱中拖一个列表过来,设置 列表-->行组-->组属性常规-->组表达式=Int((RowNumber(Nothing)-1)/10) 分页符-->勾选在组的结尾
2. 工具箱中拖一个表,放在列表中,然后可以对表进行随意设计,表中分组就会自动按照10条一页进行分页,标题也会在新页中被重复打印了

 

 

 

问题2:

我在表中有一个字段[数量]是需要合计的,我用SUM(数量),合计出来的是所有记录数(100条记录)的数量总合,我想只合计当前页记录数的数量小计,我该如何设置?

 

答2:

公式:=Sum(Fields!数量.Value) 这样的格式在分组中,就是求组小计, 在不是分组的情况下,就是合计。
而自动生成的语句是用的:=Sum(Fields!数量.Value, "DataSet_Name")  这条是自动生成的无论有没有分组的情况下,都是所有记录的合计

 

 

 

问题3:

我分页后,每页分页后面都跟有一个空白页,这个如何去掉?

 

答3:

这个主要是报表设计时宽度过大引起的,你可以在报表设计区域右键-->报表属性 查看纸张设置的大小及边距设置(A4 宽:21cm 高:29.7cm),然后调整表体及表单不要超过该大小即可,多调整几次,应该就没啥问题了

 

 

 

问题4:

关于打印分页数据最后多出一页空白页的问题

 

答4:

只要把报表主体的高度和所要打印的列表或表单高度一样(使两者的底部重合即可),这样打印出来就不会出现空白页了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值