2017-01-24 1 views
0

데이터 테이블의 행에 대한 앵커 링크 동적 목록을 만들어야합니다. Wicket : 데이터 테이블의 행에 대한 동적 앵커 링크를 만듭니다.

I는 데이터 테이블의 각 행에 대한 하나 개의 링크를 포함한다 예

A Simple Sortable DataTable Example

은 "FooPanel"에 따라 A (정렬) 데이터 테이블 시작.

코드는 지금까지입니다 : 내가 데이터 테이블의 항목 내 동적 링크를 연결하는 문제를 데

public class FooPanel extends Panel { 

    private static final long serialVersionUID = 1L; 

    private Link<String> createLink(String linkName, final String name) 
    { 
     final Link<String> l = new Link<String>(linkName) { 
      private static final long serialVersionUID = 1L; 

      @Override 
      public void onClick() { 
      } 
     }; 
     l.setBody(Model.of(name)); 
     return l; 
    } 

    public FooPanel(final String id, IModel<List<String>> model) { 
     super(id); 

     final List<String> linkList = model.getObject(); 

     final Label myLabel = new Label("myLabel", "this is my label"); 
     myLabel.setOutputMarkupId(true); 
     this.add(myLabel); 

     final RepeatingView view = new RepeatingView("fooPanelItems"); 

     for (final String linkLabel:linkList) 
     { 
      final Link<String> link = createLink(view.newChildId(), String.format("[ %s ]", linkLabel)); 
      link.setAnchor(myLabel); 
      link.setOutputMarkupId(true); 
      view.add(link); 
     } 

     this.add(view); 
    } 
} 

private class LazyFooPanel extends AjaxLazyLoadPanel 
{ 
    private static final long serialVersionUID = 1L; 
    final IModel<List<String>> m_model; 

    private LazyFooPanel(final String id, IModel<List<String>> model) 
    { 
     super(id, model); 
     m_model = model; 
    } 

    @Override 
    public Component getLazyLoadComponent(final String markupId) 
    { 
     return new FooPanel(markupId, m_model); 
    } 

    @Override 
    protected void onComponentLoaded(final Component component, final AjaxRequestTarget target) 
    { 
     target.add(component); 
    } 
} 

- 당신이 도와 드릴까요?

+0

정확히 어떤 문제가 있습니까? –

+0

"link.setAnchor (myLabel)"대신 "anchor"를 "to"로 설정하는 구성 요소 (테이블 행)를 식별하는 방법을 모르겠습니다. – Adrian

답변

1

Link을 추가하십시오. 나는 당신이 그것에 Panel를 대신 추가 할 필요가있다라고 생각한다. 이 패널에는 자체 Label, Link 및 기타 필요한 것이 있습니다.

새 패널을 사용하지 않으려면 WebMarkupContainer를 사용하고 FooPanel.html에 마크 업을 유지하십시오.

관련 문제