您的位置:首页 > 其它

开发ReportViewer中遇到的一些问题

2014-11-13 13:02 459 查看
http://blog.csdn.net/hebeijg/article/details/7329019

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();

            }

        }

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: