【问题标题】:asp.net ReportViewer - forcing a vertical scrollbar with SizeToReportContent=trueasp.net ReportViewer - 使用 SizeToReportContent=true 强制垂直滚动条
【发布时间】:2012-08-10 23:52:47
【问题描述】:

在 VS10 中有没有办法保持 SizeToReportContent=true 并强制垂直滚动条?我有一个允许用户选择报告的 DDL,它为 ReportViewer 设置数据源。 SizeToReportContent 似乎是动态控制报表宽度以与 ReportViewer 的宽度对齐的唯一方法。该页面包含一个高度小于报表的显示区域。如果 ReportViewer 有一个垂直滚动条,那么报表将满足显示区域限制。

我已经尝试了对 .rdlc 的样式格式和大小更改的各种组合,但在 SizeToReportContent=true 时强制滚动条没有运气。

ReportViewer 的 width 和 height 属性都被覆盖,但是 .rdlc 的哪个属性?

报告正在本地处理,但我认为这没有什么不同。

TIA!

【问题讨论】:

    标签: asp.net visual-studio-2010 report-viewer2010


    【解决方案1】:

    我希望这对某人有所帮助...

    强制 ReportViewer 生成所需的页面尺寸。

    设置 SizeToReport=false。将每个报告的所需宽度附加到由“|”分隔的 .rdlc 值的名称中。在运行报告方法中拆分所选值以获取 .rdlc 名称及其宽度。这意味着物理上确定要使用报告名称硬编码的每个报告的宽度 - [弱!]。

    代码:

    ddl in report .ascx [实际上是从数据库中填充的,但我想显示数据]

    <asp:DropDownList ID="reportDropDownList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="RunReport">
        <asp:ListItem Selected="True" Value="0">-- Select Report --</asp:ListItem>
        <asp:ListItem Value="RVSum.rdlc|504" >RV Purchased Sum</asp:ListItem>
        <asp:ListItem Value="ZeroPricePurchasesView.rdlc|550">Zero Price Purchases</asp:ListItem>
        ...
    </asp:DropDownList>
    

    运行报告方法:

    protected void RunReport(object sender, EventArgs e)
    {
        ObjectDataSource source = new ObjectDataSource("WC.DataAccess.DAO.ReportsDAO", "GetAllReports");
        string path = "RDLC" + "\\";
        string ddlValue = "";
    
    
        if (reportDropDownList.SelectedIndex != 0)
        {
            ddlValue = reportDropDownList.SelectedValue.ToString();
            string[] ddlSplit = ddlValue.Split('|');  //split ddl selected value
            path = path + ddlSplit[0];  //.rdlc name
            reportViewer.LocalReport.DataSources.Clear();
            reportViewer.LocalReport.ReportPath = path;
            reportViewer.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", source));
    
            reportViewer.AsyncRendering = false;
            reportViewer.SizeToReportContent = false;
            reportViewer.ShowZoomControl = false;
            reportViewer.Height = 400;  // default value but exactly what is needed
    
            reportViewer.Width = Convert.ToInt32(ddlSplit[1]);  // desired report width
            reportViewer.DataBind();
    
        }
        else  /* default clear viewer */
        {
            reportDropDownList.SelectedIndex = 0;
            reportViewer.LocalReport.DataSources.Clear();
            reportViewer.Reset();
        }
    }
    

    我不喜欢这种类型的编程,但在 MS 提供更好的报告查看器之前,我会这样做。

    我仍然对一些建议感兴趣 - 现在继续...

    【讨论】:

      猜你喜欢
      • 2014-09-02
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 2011-08-07
      相关资源
      最近更新 更多