2011-01-29 4 views
18

내 레코드를 표시하기 위해 CellTable을 사용하고 있지만 이제는 사용자가 셀을 클릭 할 때 선택 상자를 표시하려고합니다. 또 하나의 선택 상자는 미리 정의 된 것이 아니라 내 자신의 위젯입니다. 이 일을하는 방법을 나에게 제안 해 주시겠습니까?어떻게 CellTable 셀에 위젯을 넣을 수 있습니까?

+0

하십시오 [사용하지 않는 서명 또는 태그 라인] 게시물에서 (http://stackoverflow.com/faq#signatures). – meagar

+0

나는 똑같은 문제가있다 - 테이블에있는 셀에 꽤 많은 중량의 위젯 (로직 측면에서)을 렌더링해야한다. CellTable에서 원했던 것은 IsWidget 팩토리를 제공하여 열의 각 셀을 렌더링하기위한 위젯을 생성하는 데 사용할 수 있어야했습니다. 이 작업을 쉽게 수행 할 수는 없지만 처음부터 테이블을 구현하지는 않을 것입니다. – drdozer

답변

23

the answer에 대해 설명하는 GWT Google 그룹의 게시물이 있습니다. 기본적으로 사용자 정의 widget을 정상적으로 만들고 render 함수 내부에서 widget.getElement(). getInnterHTML()을 사용합니다.

@Override 
public void render(com.google.gwt.cell.client.Cell.Context context, 
      String value, SafeHtmlBuilder sb) { 
     if (value != null) { 
      MyWidget widget = new MyWidget(value); 
      sb.appendEscaped(widget.getElement.getInnerHTML()); 
     } 
} 
+4

widget.getElement.getInnerHTML() 대신에 외부 HTML가 포함되어 있으므로 widget.getElement.getString()을 사용하고 있습니다. –

+1

동일한 위젯을 다시 사용하여 각 셀의 HTML을 렌더링 할 수 있습니까? (아마 그냥 알아낼 수있는 코드를 작성해야하지만 .. 흥미로운 ..) – HaveAGuess

2

얼마 전에 비슷한 문제 (셀 위젯을 셀 목록 셀에 삽입하려고 시도)에 직면했으나 안타깝게도 쉬운 해결책을 찾지 못했습니다.

일반적으로 AbstractCell 또는 ActionCell까지 확장하여 특정 셀 클래스를 구현할 수 있습니다. 이 경우 render() 메서드를 재정의하고 사용자 고유의 렌더링을 구현해야합니다. 좋은 예가 AbstractCell class javadoc입니다.

8

이것은 반 패턴입니다. 셀의 전체 목적은 위젯이 없도록하기 위해서입니다. 셀에서 HTML을 직접 "렌더링"해야합니다.

+0

왜 그들은 celltables에 UIBinder 위젯 지원을 추가 했습니까? (정확히 인용문이 아니라 http://groups.google.com/group/google-web-toolkit/browse_thread/thread/9cfb4a3b5c4af0be/b75305d15a1c32e8?lnk=gst&q=celltable+widget#b75305d15a1c32e8) – HaveAGuess

+0

일 수 있습니다. 하지만 가끔 어쩔 수없는 경우 – jabal

+0

나는 동의하지 않는다. 때로는 HTML에 신경 쓰지 않고 GWT가 위젯을 렌더링하도록한다. – RockyMM

7

대답을 설명하는 GWT Google 그룹스에 대한 게시물이 있습니다. 기본적으로 사용자 정의 widget을 정상적으로 만들고 render 함수 내부에서 widget.getElement(). getInnterHTML()을 사용합니다.

@Override 
public void render(com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb) { 
    if (value != null) { 
     MyWidget widget = new MyWidget(value); 
     sb.appendEscaped(widget.getElement.getInnerHTML()); 
    } 
} 

그것은 작동하지만 한계가있다 : 당신은 는 위젯 (외부 또는 내부)에 직접 핸들러를 첨부 할 수 없습니다

  • 가.

예 :

widget.addClickHandler(new ClickHandler() { 
    @Override 
    public void onClick(ClickEvent event) { 
     // Won't work!!! 
    } 
}); 

나 :

widget.getMyTextBox().addClickHandler(new ClickHandler() { 
    @Override 
    public void onClick(ClickEvent event) { 
     // Won't work!!! 
    } 
}); 
+1

이 제한 사항에 대한 해결 방법이 있습니까? 나는 정말로 그런 funcitonality를 구현하고 싶다. – nanospeck

+0

에서 http : // stackoverflow를 살펴보십시오.com/questions/4691801/how-can-i-render-a-clickabletext-cell-anchor-in-a-gwt-celltable 'thomas'의 답변을보세요 – user949110

+0

클릭 이벤트가 트리거됨을 알고 있어야합니다. 언제든지 ** 항목 **이 클릭됩니다. 열에 두 개의 버튼이있는 경우 어떤 버튼을 클릭했는지 구분할 수 없습니다. 이 경우이 답변을 참조하십시오. http://stackoverflow.com/questions/9108317/gwt-celltable-need-to-have-two-buttons-in-last-single-cell-of-each-row. – Ben

관련 문제