2013-09-05 5 views
2

확장 영역에 위젯을 표시 할 수있는 방법이 있습니까? RowExpander는 간단한 HTML 만 표시 할 수있는 AbstractCell을 사용합니다. 위젯에서 html을 가져 와서 셀에 배치 할 수 있지만 위젯의 버튼은이 후에 작동하지 않습니다.GXT에서 RowExpander 내부에 위젯 삽입

답변

1

RowExpander 클래스를 확장하거나 beforeExpand 메서드를 재정의합니다. 여기에 내가 한 일은 버튼을 삽입하는 데 유용하거나 제 경우에는 격자가 필요합니다 :

public class RowWidgetExpander extends RowExpander { 

private Widget widget; 

public void setWidget(Widget widget) { 
    this.widget = widget; 
} 

public Widget getWidget() { 
    return widget; 
} 

@Override 
protected boolean beforeExpand(ModelData model, Element body, El row, int rowIndex) { 
    RowExpanderEvent e = new RowExpanderEvent(this); 
    e.setModel(model); 
    e.setRowIndex(rowIndex); 
    e.setBodyElement(body); 

    if(fireEvent(Events.BeforeExpand, e)) { 
     body.setInnerText(""); 
     body.appendChild(widget.getElement()); 
     ComponentHelper.doAttach(widget); 

     return true; 
    } 

    return false; 
} 
0

그리드에 위젯을 삽입하는 대신. 그리드에 위젯을 넣을 수 있습니다.

AbsolutPanel에 격자를 삽입하십시오. 확장 이벤트 후 AbslolutPanel에 위젯을 삽입하고 확장 영역에 위치를 설정할 수 있습니다.

격자의 전체 높이 (모든 격자 선)와 같은 AbsolutPanel의 높이를 설정하십시오. AbsolutPanel은 스크롤 패널 안에 넣습니다.

이 솔루션을 사용하면 순수 HTML뿐만 아니라 위젯을 사용할 수 있습니다. 그리고 스크롤링에 대해 걱정할 필요가 없습니다.

0

이 문제를 해결하려면 행 확장기에서 이벤트가 다시 작동하도록하십시오. http://www.sencha.com/forum/showthread.php?250316-RowExpander-dosn-t-fire-events-on-ContentCell

+0

질문에 대답하는 링크의 관련 부분을 인용하십시오. 그 이유는 그 순간을 훨씬 넘어서서 질문에 답하기위한 것이지 미래에 사람들이 문제에 대한 답변을하기 위해 Google에 답변 할 의도이기 때문입니다. 앞으로이 링크가 끊어지는 경우, 귀하의 대답은 다른 사람들에게는 쓸모가 없습니다. – StormeHawke

관련 문제