开发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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值