2014-09-24 3 views
0

열에 숨겨진 열을 추가하여 그리드에 16 진수 색상을 저장할 수 있습니까? 그런 다음이 열의 값을 사용하여 해당 행의 배경색을 지정합니다.Slickgrid는 각 행의 색상을 포함하기 위해 열을 사용합니까?

+0

열 정의는 데이터와 연결되지만 열이없는 데이터도 가질 수 있습니다. 따라서 문제의 필드에 대해 정의하지 않음으로써 열을 숨 깁니다. 어떤 조건으로 스타일이 결정됩니까? 어떤 사건이 스타일을 바꿀까요? 데이터 배열 또는 [dataview] (https://github.com/mleibman/SlickGrid/blob/master/slick.dataview.js)를 사용하고 있습니까? – Origineil

+0

당신이 정확히 무엇을 요구하는지 이해한다면, 어떤 조건으로도 스타일을 결정할 수 없습니다. 모든 행은 이미 저장된 색을 가지며 행은 해당 색에 따라 렌더링해야합니다. 스타일은 '라이브'일 필요가 없으므로 어떤 이벤트도 스타일을 변경하지 않습니다. 데이터보기 사용. – mark

답변

0

전체 행의 스타일은 개별 행과 관련하여 표에 metadata을 제공하여 가장 직관적으로 수행됩니다. Slickgrid Dataview를 사용하면 그룹이 자체적으로 groupItemMetadataProvider을 통해 정보를 제공하기 때문에 그룹화를 지원할 필요가 있으므로 약간 더 어려워집니다. 정보와 유사하게 provided here 몇 가지 옵션을 사용할 수 있습니다. 각 셀의 서식을 지정하려고하면 공백이 눈에 잘 띄고 빈 셀에 문제가 발생할 수 있습니다.

이와 같이, 나는 당신이 지원할 각 색상에 해당하는 CSS 클래스를 제공 할 것입니다. getItemMetadata을 설치하여 각 행에 해당하는 CSS를 반환하십시오.

var defaultImpl = dataView.getItemMetadata 

var override = function(row){ 

    if(!defaultImpl(row)) { 
    var item = dataView.getItem(row) 
    /* 
    assuming the color is stored similar to #000000 ... strip off the # 
    in addition I've prefixed my css classes with 'color_' 
    */ 
    var color = item.color ? 'color_' + item.color.substr(1, item.color.length) : "" 
    var metadata = item.color ? {cssClasses: color} : null 
    return metadata 
    } 
    return defaultImpl(row) 
} 

dataView.getItemMetadata = override 

참고 : 그리드에 사용할 수있는 컨텍스트 외부 모든 스타일링 시도 스크롤에 닦아 얻을 것이다.

+0

감사합니다. 이것은 잘 작동합니다. 유일한 문제는 WebKit 애니메이션을 사용하여 클래스를 적용하고 화면 밖으로 스크롤 할 때마다 다시 클래스가 다시 적용된 것처럼 보이고 애니메이션이 다시 시작되는 것입니다. 이것을 막을 수있는 방법이 있습니까? – mark

+0

격자는 "현재"보기 색인에서 +/- 오프셋을 렌더링합니다. 스크롤 할 때 행이 동적으로 추가되고 제거되므로보기로 스크롤되는 행은 본질적으로 항상 새로운 DOM 요소입니다. 이 동작은 [렌더링 후 예제] (http://mleibman.github.io/SlickGrid/examples/example10-async-post-render.html)에서 볼 수 있습니다. 내 피들에 애니메이션을 추가하고 그 주위를 어지럽 힌다. – Origineil

+0

다소 익숙하지는 않지만 asyncPostRender를 활성화하고 행이 이전에 렌더링되었는지 여부를 추적하는 부울을 주입 할 수 있습니다. 메타 데이터 공급자에서 해당 속성을 사용하여 그에 맞게 애니메이션 CSS를 포함하거나 포함시킬 수 있습니다. 데이터를 스크롤하는 동안 [내 업데이트 된 예제] (http://jsfiddle.net/35tq4a5g/6/)의 콘솔 명령문을 확인하십시오. – Origineil