2013-08-27 1 views
0

NatTable을 처음 사용합니다. 나는 NatTable 예제와 소스 코드를 철저히 다뤘지만, 내 문제 중 하나에 대한 해결책을 얻지 못하고있다. NatTable에는 다른 열의 값에 따라 선택을위한 확인란을 제공해야하는 열이 있습니다. Checkboxpainter, checkboxcelleditor, defaultbooleanconverter 및 IEditableRule을 사용했습니다. 이 확인란을 사용하면 셀을 편집 할 수 있는지 여부에 관계없이 확인란이 렌더링되지만, 셀을 편집 할 수있는 경우에만 확인란을 표시 할 수 있습니다.NatTable - 편집 가능한 경우에만 확인란이 필요합니다.

그러나 우리의 요구 사항에 따라 행을 선택할 수없는 경우 사용자는 확인란을 선택하지 않아야합니다. 또는 최악의 경우에는 선택 가능하지 않은 행에 대해 disabledcheckbox를 렌더링해야합니다.

누군가 나를 도울 수 있습니까?

감사와 관련,

Pradyumna

답변

0

이것에 대한 해결책을 얻었다. OOTB에서 상속받은 사용자 정의 checkboxpainter를 작성하고 getImage 메소드를 오버라이드하여 적절한 셀에 null을 리턴해야했습니다.

0

내 작업의 비슷한 케이스에 방금 적용한 더 나은 솔루션이 있습니다. .

나는 테이블에 다음과 같은 구성을 추가하여 그것을했다 :

// make checkbox cells editable 
configRegistry.registerConfigAttribute(EditConfigAttributes.CELL_EDITABLE_RULE, IEditableRule.ALWAYS_EDITABLE, DisplayMode.EDIT, CONFIG_LABEL_CHECKBOX); 

// register the checkbox editor for DisplayMode.EDIT 
configRegistry.registerConfigAttribute(EditConfigAttributes.CELL_EDITOR, new CheckBoxCellEditor(), DisplayMode.EDIT, CONFIG_LABEL_CHECKBOX); 

// register the checkbox painter for DisplayMode.NORMAL 
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, new CheckBoxPainter(), DisplayMode.NORMAL, CONFIG_LABEL_CHECKBOX); 

// register the painter for empty cells in DisplayMode.NORMAL 
configRegistry.registerConfigAttribute(CellConfigAttributes.CELL_PAINTER, new BackgroundPainter(), DisplayMode.NORMAL, CONFIG_LABEL_EMPTY); 

기본적으로,이 구성이 빈 셀에 대한 편집 가능한 체크 박스 CONFIG_LABEL_CHECKBOX 레이블 및 CONFIG_LABEL_EMPTY 소개합니다.

지금 당신이 할 일은 당신의 bodyDataLayerIConfigLabelAccumulator를 연결하는 것입니다

bodyDataLayer.setConfigLabelAccumulator(new IConfigLabelAccumulator() 
{ 
    public void accumulateConfigLabels(LabelStack configLabels, int columnPosition, int rowPosition) 
    { 
    if(columnPosition == CHECKBOX_COLUMN_INDEX) 
    { 
     if(someCodeToCheckIfRowIsEditable(rowPosition)) 
     { 
     configLabels.add(CONFIG_LABEL_CHECKBOX); 
     } 
     else 
     { 
     configLabels.add(CONFIG_LABEL_EMPTY);    
     } 
    } 
    } 
} 
관련 문제