Hi,

In the constructor of UserActionsPanel, the checkbox is created like so:

add(new CheckBox("select", item.getModel()));

However, I think item.getModel() returns an IModel<ICellPopulator<KostenOV>> type. This can't work in a CheckBox which requires a Boolean model.

On 13/08/2012 8:33 AM, Delange wrote:
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&lt;?>> columns = new ArrayList<IColumn&lt;?>>();

                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&lt;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



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to