나는
는 브 루트가 필요한 페이지 크기를 생성 할 수의 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가 더 나은 보고서 뷰어를 제공 할 때까지 이것이 가능할 것이다.
저는 아직 몇 가지 제안에 관심이 있습니다. 지금 당장 이동하십시오 ...
출처
2012-08-10 15:52:47
kmm