Hi, in this program i use a datatable with selections. In the column beneath
the filtercolum i added a checkbox.
The user must select wich records the program must add to another file (at
the end)
In this example the table is shown correctly, it has a checkbox.
But whatever I do I'll never see any status change reflecting the checkbox.
(The checkbox is part of the KostenOV record that is shown)
I can'figure out what is wrong. I read a lot of articles but none could
help.
My source is:
package com.vdr.logistiek.gui.kosten.regels.opbouw;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import
org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import
org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.HeadersToolbar;
import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.NavigationToolbar;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterForm;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilterToolbar;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.filter.FilteredAbstractColumn;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.filter.GoAndClearFilter;
import
org.apache.wicket.extensions.markup.html.repeater.data.table.filter.IFilterStateLocator;
import
org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;
import com.vdr.logistiek.bo.view.KostenOV;
import com.vdr.logistiek.gui.kosten.header.HeaderPage;
import com.vdr.logistiek.gui.kosten.overzicht.KostenfacturenOverzichtPage;
import com.vdr.logistiek.gui.template.MyFilterColumn;
import com.vdr.logistiek.service.KostenService;
import com.vdr.logistiek.service.view.KostenOVService;
public class RegelPage extends WebPage{
private RegelInput input;
private List<KostenOV> kostenOVList = new ArrayList<KostenOV>();
@SpringBean(name = "kostenService") private KostenService kostenService;
@SpringBean(name = "kostenOVService") private KostenOVService
kostenOVService;
public RegelPage(){
input = new RegelInput();
setDefaultModel(new CompoundPropertyModel<RegelInput>(input));
KostenOVProvider kostenOVProvider = new KostenOVProvider();
FilterForm form = new FilterForm("inputForm", kostenOVProvider);
add(form);
addTable(form, kostenOVProvider);
form.add(getSaveButton());
form.add(getCancelButton());
form.add(new FeedbackPanel("feedback"));
}
private Form getForm(){
Form form = new Form("inputForm"){
private static final long serialVersionUID = 1L;
protected void onSubmit() {
info("the form was submitted!");
}
};
return form;
}
private Button getSaveButton(){
Button saveButton = new Button("saveButton"){
public void onSubmit(){
System.out.println("savebutton clicked");
// PageParameters parameters = new PageParameters();
// setResponsePage(OverzichtPage.class,parameters);d
for (KostenOV kostenOV:kostenOVList){
System.out.println(kostenOV.isSelect());
}
}
};
return saveButton;
}
/**
*
* @return
*/
private Button getCancelButton(){
Button cancelButton = new Button("cancelButton"){
@Override
public void onSubmit(){
setResponsePage(KostenfacturenOverzichtPage.class);
}
};
cancelButton.setDefaultFormProcessing(false);
return cancelButton;
}
@SuppressWarnings({ "rawtypes" })
class KostenOVProvider extends SortableDataProvider<KostenOV> implements
IFilterStateLocator, Serializable {
private KostenOV kostenSelectie = new KostenOV();
public KostenOVProvider() {
setSort("vm.partijnummer", SortOrder.ASCENDING);
}
@Override
public Iterator<KostenOV> iterator(int first, int count) {
kostenOVList = kostenOVService.findAll(first, count,
kostenSelectie,
getSort());
return kostenOVList.iterator();
}
@Override
public int size() {
return kostenOVService.countFindAll(kostenSelectie);
}
@Override
public IModel<KostenOV> model(KostenOV kostenSelectie) {
return new DetachableKostenOVModel(kostenSelectie);
}
@Override
public Object getFilterState() {
return kostenSelectie;
}
@Override
public void setFilterState(Object kostenSelectie) {
this.kostenSelectie = (KostenOV) kostenSelectie;
}
}
class DetachableKostenOVModel extends LoadableDetachableModel<KostenOV>
{
// @SuppressWarnings("unused")
// private List<Magazijn> magazijnList ;
private KostenOV kosten;
public DetachableKostenOVModel(KostenOV c) {
//this(c.getId());
this.kosten = c;
System.out.println("select in
model="+kosten.isSelect());
}
public DetachableKostenOVModel(long id) {
if (id == 0) {
throw new IllegalArgumentException();
}
}
protected KostenOV load() {
return kosten;
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
private void addTable(FilterForm form, KostenOVProvider
kostenOVProvider) {
MyFilterColumn myFilterColumn = new MyFilterColumn();
List<IColumn<?>> columns = new ArrayList<IColumn<?>>();
columns.add(addActionsColumn());
columns.add(myFilterColumn.getString ("Trans." ,
"vm.transportkode" ,
"transportkode",4));
columns.add(myFilterColumn.getInteger("Partij" ,
"vm.partijnummer" ,
"partijnummer",6));// gui, dbo, getset
columns.add(myFilterColumn.getInteger("vlg" ,
"vm.partijvolgnr" ,
"partijvolgnr",3));
columns.add(myFilterColumn.getInteger("Order" ,
"vm.ordernummer" ,
"ordernummer",6));
columns.add(myFilterColumn.getInteger("vlg" ,
"vm.ordervolgnummer" ,
"ordervolgnummer",3));
columns.add(myFilterColumn.getString ("Mag" ,
"vm.eindlokatie" ,
"eindlokatie",5));
columns.add(myFilterColumn.getString ("Artikel" ,
"vm.artikelkode" ,
"artikelkode",7));
columns.add(myFilterColumn.getString ("Zoekveld", "vm.zoekveld"
,
"zoekveldArtikel",8));
columns.add(myFilterColumn.getInteger("Aantal" ,
"vm.aantal" ,
"aantal",6));
columns.add(myFilterColumn.getInteger("Transp" ,
"vm.transporteur" ,
"transporteur",6));
columns.add(myFilterColumn.getString ("Naam" , "r.naam"
,
"naamTransporteur",10));
columns.add(myFilterColumn.getString ("Mutcde" ,
"vm.mutatiekode" ,
"mutatiekode",5));
DataTable table = new DataTable("datatable", columns, kostenOVProvider,
10){
protected Item newRowItem(String id, int index, IModel
model) {
Item item = super.newRowItem(id, index, model);
item.add(new AttributeModifier("class", new Model(
index % 2 == 0 ? "even" : "odd")));
return item;
}
};
FilterToolbar filterToolbar = new FilterToolbar(table, form,
kostenOVProvider);
table.addTopToolbar(new HeadersToolbar(table,
kostenOVProvider));
table.addTopToolbar(filterToolbar);
table.addBottomToolbar(new NavigationToolbar(table));
form.add(table);
}
private FilteredAbstractColumn<KostenOV> addActionsColumn() {
return new FilteredAbstractColumn<KostenOV>(
new ResourceModel( getString("Actie"))) {
@Override
public Component getFilter(String componentId,
FilterForm<?> form) {
return new GoAndClearFilter(componentId, form,
new ResourceModel("filter"), new
ResourceModel("clear"));
}
@Override
public void
populateItem(Item<ICellPopulator<KostenOV>>
cellItem,String componentId, IModel<KostenOV> rowModel) {
cellItem.add(new UserActionsPanel(componentId,
rowModel,cellItem));
;
}
};
}
private static class UserActionsPanel extends Panel {
public UserActionsPanel(String id, IModel<KostenOV>
kostenModel,Item item)
{
super(id);
//addEditButton(kostenModel);
add(new CheckBox("select", item.getModel()));
}
private void addEditButton(final IModel<KostenOV> kostenModel) {
Button editButton = new Button("editButton"){
public void onSubmit(){
KostenOV kostenOV = kostenModel.getObject();
PageParameters parameters = new PageParameters();
//parameters.add("id", kostenOV.getKostenId() );
setResponsePage(HeaderPage.class,parameters);
}
};
add(editButton);
}
}
}
--
View this message in context:
http://apache-wicket.1842946.n4.nabble.com/Checkbox-in-DataTable-is-not-reflecting-its-sts-in-checkbox-tp4651174.html
Sent from the Users forum mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org