2012-08-08 2 views
0

VS10에서는 SizeToReportContent = true로 유지하고 세로 스크롤 막대를 강제로 사용하는 방법이 있습니까? 사용자가 ReportViewer에 대한 DataSource를 설정하는 보고서를 선택할 수있는 DDL이 있습니다. SizeToReportContent는 ReportViewer 너비에 맞춰 보고서 너비를 동적으로 제어하는 ​​유일한 방법 인 것 같습니다. 페이지에는 보고서보다 작은 높이의 표시 영역이 있습니다. ReportViewer에 수직 스크롤 막대가있는 경우 보고서는 표시 영역 제약 조건을 충족합니다.asp.net ReportViewer - SizeToReportContent = true를 사용하여 세로 스크롤 막대 강제로 작성

나는 SizeToReportContent = true 인 동안 스크롤바를 강요하는 행운과 함께 .rdlc에 대한 스타일 형식 및 크기 변경의 모든 종류의 조합을 시도했다.

ReportViewer의 너비 및 높이 속성은 모두 재정의되지만 .rdlc?

보고서가 로컬에서 처리되고 있지만 차이가 있다고 생각하지 않습니다.

TIA!

답변

0

나는

는 브 루트가 필요한 페이지 크기를 생성 할 수의 ReportViewer를 강제로 ...이 사람을 도움이되기를 바랍니다.

SizeToReport = false로 설정하십시오. 각 보고서의 원하는 너비를 "|"로 구분 된 .rdlc 값의 이름에 추가했습니다. 보고서 실행 방법에서 선택한 값을 분할하여 .rdlc 이름과 폭을 가져옵니다. 이는 보고서 이름 - [weak!]을 사용하여 하드 코딩 된 각 보고서의 너비를 실제로 결정하는 것을 의미합니다.

코드 : 보고서에

DDL은의 .ascx [실제로 DB에서 인구를하지만 데이터를 보여주고 싶었다]

<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가 더 나은 보고서 뷰어를 제공 할 때까지 이것이 가능할 것이다.

저는 아직 몇 가지 제안에 관심이 있습니다. 지금 당장 이동하십시오 ...