2017-01-24 1 views
0

Мне нужно создать динамический список ссылок привязки к строкам в таблице данных.Wicket: создание динамических привязных ссылок на строки в таблице данных

Я начал с (отсортированный) таблицы данных в соответствии данном примере

A Simple Sortable DataTable Example

«FooPanel» должен содержать одну ссылку для каждой строки в таблице данных.

код до сих пор:

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)» – Adrian

ответ

1

На данный момент вы добавляете Link в RepeatingView. Я думаю, вам нужно добавить вместо него Panel. Эта панель будет иметь свои собственные Label, Link и все, что вам нужно в строке.

Если вы не хотите использовать новую панель, вы можете использовать WebMarkupContainer и сохранить разметку в FooPanel.html.

Смежные вопросы