2015-08-14 16 views
8

Tôi đang sử dụng ReportViewer for MVC để hiển thị báo cáo trong chế độ xem trong ứng dụng MVC của mình.
Làm cách nào để đặt chiều rộng cho điều khiển này?Cách đặt chiều rộng cho ReportViewer cho MVC

Tôi đã đặt chiều rộng thành 100% nhưng không hoạt động, như có thể thấy trong ảnh chụp màn hình này.

image width

Theo quan điểm của tôi, tôi sử dụng:

<div> 
    @Html.ReportViewer(ViewBag.ReportViewer as Microsoft.Reporting.WebForms.ReportViewer, new { scrolling = "yes", width = "100%" }) 
</div> 

Và trang aspx là:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title></title> 
</head> 
<body style="margin: 0px; padding: 0px;width:100%;"> 
<form id="form1" runat="server"> 
<div style="width:100%"> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
<Scripts> 
<asp:ScriptReference Assembly="ReportViewerForMvc"  Name="ReportViewerForMvc.Scripts.PostMessage.js" /> 
</Scripts> 
</asp:ScriptManager> 
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="100%" Height="600px"></rsweb:ReportViewer> 
</div> 
</form> 
</body> 

+0

bài viết một số html. – Johan

+0

@johan đã cập nhật câu hỏi bằng mã. –

Trả lời

11

thử t o viết mã dưới đây vào điều khiển của bạn

using System.Web.UI.WebControls; 

    ReportViewer reportViewer = new ReportViewer(); 
    reportViewer.ProcessingMode = ProcessingMode.Local; 
    reportViewer.SizeToReportContent = true; 
    reportViewer.Width = Unit.Percentage(100); 
    reportViewer.Height = Unit.Percentage(100); 
+0

Tại sao bạn đặt Chế độ xử lý thành Local? Nó chỉ hoạt động đối với tôi nếu tôi đặt nó ở chế độ Từ xa. – numaroth

+0

Đối với tôi chiều rộng là 100% sau khi tải xong, nhưng tại thời điểm tải chiều rộng là ít hơn như trong hình picpaste.com/width-VaOqaz2X.png Bất kỳ ý tưởng tại sao nên –

1

Lưu ý: tôi đang sử dụng ReportViewerForMvc từ NuGet

tôi thấy rằng tôi cần phải tấn công các vấn đề chiều rộng/chiều cao tính bằng hai mặt trận - Tôi đã thêm một CSS để thay đổi iframe trong ReportViewerWebForm.aspx khi nó được tải.

iframe { 
 
    /*for the report viewer*/ 
 
    border: none; 
 
    padding: 0; 
 
    margin: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
}

Phần còn lại sẽ được giống như câu trả lời chấp nhận ngoại trừ tôi loại bỏ

reportViewer.SizeToReportContent = True

từ bộ điều khiển của tôi bởi vì nó ẩn thanh cuộn mà tôi cần cho các báo cáo rộng hơn tôi render trong cùng một Report.cshtml là

@using ReportViewerForMvc; @{ ViewBag.Title = " Report"; } 
 

 
<h2>Simple Report </h2> 
 

 
@Html.ReportViewer(ViewBag.ReportViewer as Microsoft.Reporting.WebForms.ReportViewer)

điều khiển của tôi:

> 

public ActionResult ReportByType() 
     { 
      var data =SomeFunction.CreateDataTable(GetReportDataFromDB()); 

      ReportViewer reportViewer = new ReportViewer(); 
      reportViewer.ProcessingMode = ProcessingMode.Local; 

      reportViewer.LocalReport.ReportPath = 
       Request.MapPath(Request.ApplicationPath) + 
        @"Views\Reports\ReportByType.rdlc"; 
      reportViewer.LocalReport.DataSources.Add(new 
       ReportDataSource("DataSet1", data)); 
      // reportViewer.SizeToReportContent = true; ---hides the scrollbar which i need 
      reportViewer.Width = Unit.Percentage(100); 
      reportViewer.Height = Unit.Percentage(100); 

      ViewBag.ReportViewer = reportViewer; 
      return PartialView("Report"); 

     } 


     enter code here 
+0

Đối với tôi chiều rộng là 100% sau khi tải xong, nhưng tại thời điểm tải chiều rộng là ít hơn như trong hình ảnh http://picpaste.com/width-VaOqaz2X.png Bất kỳ ý tưởng tại sao như vậy –

+0

Không chắc chắn. Không biết làm thế nào bạn có dây nó ... (không thể đỏ văn bản màu đỏ trên pic) ... có lẽ bạn nên chắc chắn rằng một CSS đặt kích thước iframe là đủ để hiển thị các spinner .... vì vậy khi bạn kích hoạt sự kiện tải, nó sẽ không quá tệ. Phù hợp với màu sắc để làm cho nó trông mịn màng. Sau khi tải báo cáo sẽ xử lý kích thước (100%). Hi vọng điêu nay co ich. – user3590235

Các vấn đề liên quan