Giải pháp toàn hệ thống dựa trên CSS
Điều này không yêu cầu bất kỳ khung JavaScript hoặc Ajax hoặc bất kỳ trình bao bọc nào khác. Nó đã được thử nghiệm trên Internet Explorer, Firefox, Safari và Chrome.
Điều này có thể được khắc phục ở cấp Style Sheet trong Máy chủ Báo cáo.
Đầu tiên, điều hướng đến thư mục nơi dịch vụ báo cáo được cài đặt, trong trường hợp của tôi ( SQL Server 2012 SP1), đó là:
C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer
Trong thư mục đó, bạn sẽ tìm thấy một tệp có tên là reporterver.config.
Xem Tùy chỉnh Biểu định kiểu cho Trình xem HTML và Trình quản lý Báo cáo .
Trong tệp đó, hãy chèn một dòng XML như (từ tài liệu trên):
<Configuration>
...
<HTMLViewerStyleSheet>SafariChromeFix</HTMLViewerStyleSheet>
...
</Configuration>
Lưu vào đó.
Những gì họ không cho bạn biết trong liên kết trên là mục nhập này ghi đè hoàn toàn biểu định kiểu mặc định. Những nỗ lực đầu tiên của tôi để làm cho các báo cáo hiển thị hoạt động bằng cách thêm một biểu định kiểu div, mọi thứ khác đã bị hỏng. Khi tôi phát hiện ra rằng chỉnh sửa này đối với tệp reporserver.config không tăng thêm, nhưng thực sự thay thế biểu định kiểu mặc định, tôi đã sao chép vào biểu định kiểu mặc định và mọi thứ bắt đầu hoạt động.
Tiếp theo, đi xuống thư mục Styles ( C:\Program Files\Microsoft SQL Server\MSRS11.MSSQLSERVER\Reporting Services\ReportServer\Styles
).
Tạo một bản sao tệp có tên SP_Full.css và đặt tên cho bản sao là SafariChromeFix.css. Tại thời điểm này, SafariChromeFix.css phải giống với SP_Full.css.
Chỉnh sửa SafariChromeFix.css và thêm các dòng sau vào đầu:
div {
overflow: visible !important;
}
Lưu nó.
Sau khi điều này được lưu, tất cả các báo cáo hiện có về phiên bản Dịch vụ báo cáo này sẽ hiển thị trên tất cả các trình duyệt bao gồm Chrome và Safari.
Xin lưu ý:
Nó không chỉ có thể xảy ra mà còn rất có thể là reporterver.config sẽ bị ghi đè lên các bản cập nhật cho các dịch vụ báo cáo, vì vậy bạn có thể phải thêm <HTMLViewerStyleSheet>SafariChrome</HTMLViewerStyleSheet>
thẻ vào đó theo thời gian.
Điều này cũng cung cấp cho chúng tôi một nơi để đột nhập vào biểu định kiểu mặc định và thực hiện nhiều thay đổi tùy chỉnh khác bắt đầu từ một thứ đã hoạt động. Và vì nó không phải là biểu định kiểu mặc định nên tệp CSS tùy chỉnh mới của bạn không bị ghi đè trong quá trình nâng cấp và vá lỗi.