2

일부 보고서는 Firefox에서 제대로 표시되지 않습니다. 첫 번째 열에는 CSS가 없습니다. 조사한 결과, 다음을 찾았습니다.SSRS : 2005, 첫 번째 열에 CSS가 적용되지 않았습니다.

<tr> 
    <td style="HEIGHT:6.93mm" style="...">1st Column</td> 
    <td style="...">2nd Column</td> 
    <td style="...">3rd Column</td> 
</tr> 

style = "HEIGHT : 6.93mm"을 제거하면 Firefox에서 제대로 렌더링됩니다.

당 JudyX의 게시물 here on Monday, February 13, 2006 11:54 PM : 보고서의 첫 번째 열이 올바르게 스타일 수 없습니다

. 보고서 뷰어 컨트롤을 사용하려면 모든 테이블 행에 대해 "높이"를 지정해야합니다. 불행하게도, 이것은 table-row 요소가 아니라 해당 행의 첫 번째 테이블 셀에 적용됩니다. 스타일 속성으로 적용하면 다른 곳에서 설정 한 스타일과 충돌합니다.

누군가가 해결책을 찾았습니까?

답변

2

SSRS 2005에서도 여전히 이러한 현상이 발생하는지 확인할 수 있습니다. Firefox가 보고서 디자이너가 의도 한대로 렌더링하지 않는 유일한 브라우저는 아닙니다. 분명히 IE7 (그리고 아마도 IE6)은 엘리먼트에 할당 된 여러 스타일 속성이있는 경우 "승리"하는 마지막 스타일 속성을 가정합니다. 표준 모드와 IE8에서 IE8은이 상황에서 "승리"하는 첫 번째 스타일 속성을 가정합니다. 나는 우리 팀이 이것을 테스트하지는 않았지만 모든 표준 준수 브라우저가 IE8과 Firefox와 같은 선택을 할 것이라고 생각합니다.

핫픽스 측면에서 해결책을 찾지 못했지만 나쁜 HTML이 브라우저에 표시되지 않도록하는 방법이 있습니다. OMG Ponies - JudyX의 게시물에 대한 링크를 게시 해 주셔서 감사합니다. Wodeh는 포스트에 대한 3/4의 좋은 해결책으로 답했습니다. 불행하게도, 게시 된 코드를 사용하는 방법은 완전히 명확하지 않았습니다.

접근 방식은 ReportViewer Control이 들어있는 페이지에서 response filter을 사용하는 것입니다. 필터는 브라우저로 전송되는 원시 HTML에 대한 액세스 권한을 가지며 새로운 첫 번째 열 트릭을 수행하지 않고 HTML을 직접 수정할 수있는 기회를 제공합니다. Page_Load 메서드에서 Response를 설정합니다.다음 코드를 사용하여 속성을 필터링 :

protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Filter = new CorrectSSRSIssuesResponseFilter(Response.Filter); 
     if (!IsPostBack) { 
      RenderReport(); 
     } 
    } 

CorrectSSRSIssuesResponseFilter 클래스는 다음과 같이 정의되며, 주로 포스트에서 Wodeh의 코드를 기반으로한다.

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Text; 

namespace Reports 
{ 
    public class CorrectSSRSIssuesResponseFilter : Stream 
    { 
     private Stream _sink; 
     private StringBuilder Output = new StringBuilder(); 

     public CorrectSSRSIssuesResponseFilter(Stream sink) 
      : base() 
     { 
      _sink = sink; 
     } 

     public CorrectSSRSIssuesResponseFilter() 
      : base() 
     { 
      _sink = new MemoryStream(); 
     } 

     public override bool CanRead { get { return true; } } 
     public override bool CanSeek { get { return true; } } 
     public override bool CanWrite { get { return true; } } 
     public override void Flush() 
     { 
      _sink.Flush(); 
     } 
     public override long Length 
     { 
      get { return _sink.Length; } 
     } 
     public override long Position 
     { 
      get 
      { return _sink.Position; } 
      set 
      { _sink.Position = value; } 
     } 

     public override int Read(byte[] buffer, int offset, int count) 
     { 
      return _sink.Read(buffer, offset, count); 
     } 

     public override long Seek(long offset, SeekOrigin origin) 
     { 
      return _sink.Seek(offset, origin); 
     } 

     public override void SetLength(long value) 
     { 
      _sink.SetLength(value); 
     } 

     public override void Write(byte[] buffer, int offset, int count) 
     { 
      string strBuffer = UTF8Encoding.UTF8.GetString(buffer, offset, count); 
      //A Closing HTML tag indicates the response object has finished recieving the entire content of the page 
      strBuffer = System.Text.RegularExpressions.Regex.Replace(
       strBuffer 
       , "<TD style=\"[^\"]*\" style=(?<goodStyle>\"[^\"]*\")>" 
       , "<TD style=${goodStyle}>" 
       , System.Text.RegularExpressions.RegexOptions.Compiled 
       ); 

      buffer = System.Text.Encoding.UTF8.GetBytes(strBuffer); 
      _sink.Write(buffer, offset, buffer.Length); 
     } 

    } 
} 
0

이것은 CSS 스타일 문제입니다. 나는 성공적으로 이전에이 문제를 픽스를 this post에서 성공적으로 구현했습니다.

기본적으로보고 서비스 (기본적으로 C : \ Program Files \ Microsoft SQL Server \ MSSQL에 있음) 용 CSS 파일을 찾아야합니다. 3 \보고 서비스 \ ReportManager \ 스타일 \ ReportingServices.css 보고서 서버), 그리고이 클래스 규칙을 추가 :

.DocMapAndReportFrame 
{ 
min-height: 860px; 
} 
+0

페이지 생성이 잘못된 HTML 요소에 스타일 속성을 도입하는 것을 중지시키는 CSS에서 최소 높이를 정의하는 방법은 무엇입니까? –

2

을이 솔루션은 정말 해결책이 아니다; 그것은 해킹입니다.

동작이 나타나면 새 첫 번째 열을 정의하십시오. 오른쪽 테두리 다른 셀에 국경 스타일, 스타일이있는 경우 등 텍스트가없는, 아니 표현,

  • 설정 최소 폭 (0.03125 인치)
  • -

    1. 빈에는 다음과 같은 특성을가집니다 일치하는 새 첫 번째 셀의 흰색/다른 설정하는 동안.
  • 0

    ReportViewer 제어에 AsyncRendering="true"을보십시오 : 비밀 소스는 첫 번째 스타일 속성을 없애기 위해 정규식을 사용하는 쓰기() 메소드입니다.

    비동기 렌더링을 사용하면 생성 된 HTML에 두 개의 스타일 태그가 없습니다. 높이에 sytle 태그를 사용하고 다른 모든 스타일은 td 요소의 class 속성을 통해 적용됩니다.

    0

    훨씬 간단한 해결 방법으로이 문제를 해결할 수 있습니다. 손상된 행 아래에 anoter 행을 추가하고 Visibility : Hidden = True를 설정하십시오.

    행운을 빈다.

    관련 문제