2012-02-06 2 views
0

SmartGWT 2.5, 특히 RESTDataSource가 지원하는 ListGrid를 사용하고 있습니다. 서버 통합은 서블릿을 통해 이루어 지므로 fetchData() 만 구현하면됩니다. 데이터는 List<Map<String, Object>>이고 서버 측은 JSON으로 변환되어 DSResponse로 전송됩니다. 데이터 소스가 지원하는 라이브 그리드는 grid.fetchData()를 통해 프로그래밍 방식으로 서버를 가져옵니다.SmartGWT LiveGrid에서 그리드 레코드에 스타일을 프로그래밍 방식으로 적용 할 수 없습니다.

요구 사항 : 서버에서 보내는 레코드 속성 중 하나의 값을 기반으로 레코드 기본 스타일 (또는 사용자 정의 스타일)을 설정하고 싶습니다. 이렇게하기 위해 DataArrivedHandler를 시도해 보았습니다. 여기에서 사용 가능한 행을 반복하고, 행 번호를 사용하여 표에서 ListGridRecord를 가져 와서 gridRecord.set_baseStyle (String stylename) 또는 gridRecord.setCustomStyle (String stylename)을 사용하여 그 레코드에 대해 회색으로 표시된 CSS를 적용 해보십시오. 그 후에는 아무런 효과가 없지만 grid.markForRedraw()를 호출합니다. CSS가 적용되지 않습니다.

정상적인 listGrid (no dataSource)에서 행을 회색화하는 데 동일한 CSS를 사용했음을 언급해야합니다.

질문 : 내 전략이 맞습니까? 속성 값을 기반으로 레코드에 스타일을 적용하는 대체 방법이 있습니까?

+0

Hilite에서 ListGrid에 대한 조건부 hilites의 배열을 설정할 수 있으며 hilite의 CSS가 적용될 조건을 레코드에 채우는 시간을 설정할 수 있습니다. –

+0

나는 이것을 @gpapaz 팁과 함께 시험해보고 모두에게 돌아가겠습니다. – Shrinivas

답변

0

귀하의 전략은 정확하며 필요한 기능을 제 코드에서 성공적으로 달성했습니다. 레코드를 올바르게 가져 왔는지, 테스트 특성이 있는지 확인하십시오. JSON.encode (record.getJsObj())를 사용하여 레코드가 실제로 채워지는 것을 볼 수 있습니다. markForRedraw() 명시 적 호출이 필요하지 않습니다. DataArrivedEvent가 실행 된 후 ListGrid에서 해당 뷰를 다시 그립니다. 추가 도움이 필요하면 작은 코드 스 니펫을 게시하십시오. 또한 알랭 (Alain)의 의견에서 제안한 것처럼 하이라이트는 다른 좋은 옵션 일 수도 있습니다.

관련 문제