2014-04-01 7 views
1

안에있는 값을 기준으로 xrTableCell의 뒤쪽 색상을 변경해야합니다.XtraReport 서식 지정 규칙을 사용하여 속성을 조건부로 변경하는 방법은 무엇입니까?

값이 '승인 됨'인 경우 셀은 녹색 배경, 빨간색은 '비 승인', 노란색은 '보류 중'입니다.

또는 =someFunction()BackColor 속성에 액세스 데이터베이스 또는 SQL보고 (SSRS)에 입력 할 수 있습니다. 하지만 여기 XtraReport에서, 그것은 나를 허용하지 않습니다.

서식 규칙 시트의 경우의 내용을 Condition 안에 쓸 수 있습니까?

답변

1

전체적인 요점은 프로그래밍 방식으로 서식 규칙을 추가하는 것입니다.

필자의 경우 10 개의 섹션이 있으며 각 섹션의 상태 값은 '승인 됨', '대기 중', '비 승인 됨', '시작되지 않음'입니다.

스타일 설정에서 사용할 수있는 문이 IIF 인 경우 손으로 직접 처리 할 수 ​​있습니다. 그러나 여기에 DevExpress XtraReport에는이를 수행 할 수있는 방법이 없습니다. 규칙을 [조건 : 승인, 그 다음 스타일 : 녹색 배경]으로 만 작성할 수 있으면 각 섹션에 4 개의 규칙이 추가되어 총 40 개의 규칙이 작성됩니다. 아무도 손으로 그것을하는 것을 좋아하지 않을 것입니다.

좋아요, 여기 내 해결책이 있습니다.

보고서의 코드 숨김으로 이동하여 InitializeComponent(); 바로 뒤에 보고서를 조작하는 코드를 추가 할 수 있습니다. 여기 AddColorCodingFormattingRules(sections, statusColors);

private void AddColorCodingFormattingRules(IEnumerable sections, Dictionary<string, Color> statusColors) 
    { 
     foreach (var s in sections) 
     { 
      var cellName = string.Format("xrTableCell{0}", s); 
      var cell = FindControl(cellName, false) as XRTableCell; 
      if (cell == null) continue; 
      foreach (var pair in statusColors) 
      { 
       var rule = new FormattingRule 
       { 
        Condition = string.Format("[{1}] == \'{0}\'", pair.Key, s), 
        Name = string.Format("_formatStatus{1}{0}", pair.Key, s) 
       }; 
       rule.Formatting.BackColor = pair.Value; 

       FormattingRuleSheet.Add(rule); 
       cell.FormattingRules.Add(rule); 
      } 
     } 
    } 

이 솔루션은 미래에 필요로하는 사람을 도울 수 있기를 바랍니다 내 방법입니다. 그리고 XtraReport가 향후 버전에서 개선 될 수 있기를 바랍니다. 그래서 우리는 그 창조적 일 필요가 없습니다.

0

속성 표 및 서식 지정 규칙을 선택하여 보고서 디자이너에서 서식 규칙을 추가 할 수 있습니다. 조건을 추가하려면 필드를 선택한 다음 조건을 만들어야합니다. 예를 들어 값이 Status라는 열에 들어 있으면 세 가지 서식 규칙 (각 색상에 하나씩)을 만들어 다음과 같이 작성해야합니다.

[상태] == 'Aprroved'다음

, 테이블의 셀을 선택하고 다시 "이동"적용 규정에 따라 오른쪽에 선택한 포맷 규칙의 Fomratting 규칙 편집기를 엽니 다, 그래서 서식 규칙은 원하는 컨트롤에 적용됩니다.

관련 문제