Re: filtering a datatable
Hi, You'll find everything you need in the phonebook application : https://wicket-stuff.svn.sf.net/svnroot/wicket-stuff/trunk/wicketstuff-core/phonebook/ https://wicket-stuff.svn.sf.net/svnroot/wicket-stuff/trunk/wicketstuff-core/phonebook/ Regards, Gabriel. julien Graglia wrote: I you have a piece of code of how to use filter and IFilterStateLocator... -- View this message in context: http://old.nabble.com/filtering-a-datatable-tp23062814p27214593.html Sent from the Wicket - User 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
Re: filtering a datatable
...@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 -- Julien Graglia NetCeler - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org Hello, I am currently working on the same thing, I am real wicket newbie and the only helpful post I could find around was yours but unfortunately I havenT been able to understand the classes you use. Could you maybe include some of your code? I am basicly stuck in the implementation of IfilterState.. thanks -- View this message in context: http://old.nabble.com/filtering-a-datatable-tp23062814p27197797.html Sent from the Wicket - User 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
Re: filtering a datatable
Le mercredi 15 avril 2009 à 20:02 +0300, Serkan Camurcuoglu a écrit : sorry for my previous post.. what i've previously done is: - add a filtertoolbar to your datatable - make some of your columns IFilteredColumn, for example I've used TextFilteredPropertyColumn but there are also others - make your dataprovider implement IFilterStateLocator - implement the filtering logic by checking the current state of the filter in your iterator method - no need to change html I'm not sure if that's the best way to do it, but it may help you get started.. Thx for your help! I'am currently trying to figure how to use TextFilteredPropertyColumn and what model he needs. my dataProvider is a list of, say, Incident with firstName, lastName, and age My non filtered columns are : final IColumn[] columns = new IColumn[3]; int col = 0; columns[col++] = new PropertyColumn(new Model(firstName), firstName, firstName); columns[col++] = new PropertyColumn(new Model(lastName), lastName, lastName); columns[col++] = new PropertyColumn(new Model(age), age, age); Now I want to filter of lastname so I replace the PropertyColumn by a : columns[col++] = new TextFilteredPropertyColumn(new ResourceModel(lastName), lastName lastName); ?? but I got an error ... .. Ok I think I have understood : the getFilterModel method of TextFilteredPropertyColumn return a PropertyModel bases on the form model. The form model is FilterStateModel based on the IFilterStateLocator. So the TextFilteredPropertyColumn set a property of the object used as the getFilterState of the IFilterStateLocator. So I just need to create a POJO and use it as the structure to store the filter state. I can use a People (I filter on the same column) but I prefer to use another class (I have some multicolumns filter..) So : 1/ create a POJO FilterState with a string property name filterdFirstName (I use voluntary another attr name id order to be clear) 2/ set the initial filter State on the provider : provider.setFilterState(new IncidentFilter()); 3/ transform column in instances of IFilteredColumn, like TextFilteredPropertyColumn but be careful, the property is target and instanca of the FilterState ! that is what I was missing! new TextFilteredPropertyColumn(new Model(object.filterdFirstName), author, author); object is the property name of the filtestate in the FilterStateModel (which is an instance of IncidentFilter filterdFirstName is the property of I want to set in the IncidentFilter 4/ implements IFilterStateLocator in the DataProvider public Object getFilterState() { return filter; } public void setFilterState(final Object state) { filter = (IncidentFilter) state; } 5/and use the filter in the iterator of the DataProvider for (final Incident incident : list) { if ((filter.getAuthor() != null) ! incident.getAuthor().toLowerCase().contains(filter.getAuthor().toLowerCase())) { continue; } filteredList.add(incident); } -(this is some bad code (prefer filter in the DAO, use internal var to limit .toLowerCase calls...) : just to learn wicket filter? after I delete all and restart) 6/ And voilà it works! Awesome!! Just have to get the trick. Serkan Camurcuoglu wrote: you can try FilterToolbar Julien Graglia wrote: Hi, I try to filter rows of a datatable : I already have sort the rows very easily (using a SortableDataProvider) but now I need to filter some columns.. which seems to me a rather classic task. I have found classes in org.apache.wicket.extensions.markup.html.repeater.data.table.filter like ChoiceFilter and IFilterStateLocator but I did not find any examples. It seems to me that is what I need but I dont figure out how to use it I only found a post with a very short code like : final DefaultDataTable table = new DefaultDataTable(datatable, columns, provider, 30); final FilterForm form = new FilterForm(filter-form, provider); table.addTopToolbar(new FilterToolbar(table, form, provider)); form.add(table); form.add(new GoAndClearFilter(filter-buttons, form)); add(form); but I dont know what html comes with that and how to implements the filter. I have google that the phonebook application is using filter but I can't get it. I have to say that I dont know how to start with only the javadoc (how to write html? simple example?) I you have a piece of code of how to use filter and IFilterStateLocator... thx, - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
filtering a datatable
Hi, I try to filter rows of a datatable : I already have sort the rows very easily (using a SortableDataProvider) but now I need to filter some columns.. which seems to me a rather classic task. I have found classes in org.apache.wicket.extensions.markup.html.repeater.data.table.filter like ChoiceFilter and IFilterStateLocator but I did not find any examples. It seems to me that is what I need but I dont figure out how to use it I only found a post with a very short code like : final DefaultDataTable table = new DefaultDataTable(datatable, columns, provider, 30); final FilterForm form = new FilterForm(filter-form, provider); table.addTopToolbar(new FilterToolbar(table, form, provider)); form.add(table); form.add(new GoAndClearFilter(filter-buttons, form)); add(form); but I dont know what html comes with that and how to implements the filter. I have google that the phonebook application is using filter but I can't get it. I have to say that I dont know how to start with only the javadoc (how to write html? simple example?) I you have a piece of code of how to use filter and IFilterStateLocator... thx, -- Julien Graglia NetCeler - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: filtering a datatable
you can try FilterToolbar Julien Graglia wrote: Hi, I try to filter rows of a datatable : I already have sort the rows very easily (using a SortableDataProvider) but now I need to filter some columns.. which seems to me a rather classic task. I have found classes in org.apache.wicket.extensions.markup.html.repeater.data.table.filter like ChoiceFilter and IFilterStateLocator but I did not find any examples. It seems to me that is what I need but I dont figure out how to use it I only found a post with a very short code like : final DefaultDataTable table = new DefaultDataTable(datatable, columns, provider, 30); final FilterForm form = new FilterForm(filter-form, provider); table.addTopToolbar(new FilterToolbar(table, form, provider)); form.add(table); form.add(new GoAndClearFilter(filter-buttons, form)); add(form); but I dont know what html comes with that and how to implements the filter. I have google that the phonebook application is using filter but I can't get it. I have to say that I dont know how to start with only the javadoc (how to write html? simple example?) I you have a piece of code of how to use filter and IFilterStateLocator... thx, - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: filtering a datatable
sorry for my previous post.. what i've previously done is: - add a filtertoolbar to your datatable - make some of your columns IFilteredColumn, for example I've used TextFilteredPropertyColumn but there are also others - make your dataprovider implement IFilterStateLocator - implement the filtering logic by checking the current state of the filter in your iterator method - no need to change html I'm not sure if that's the best way to do it, but it may help you get started.. Serkan Camurcuoglu wrote: you can try FilterToolbar Julien Graglia wrote: Hi, I try to filter rows of a datatable : I already have sort the rows very easily (using a SortableDataProvider) but now I need to filter some columns.. which seems to me a rather classic task. I have found classes in org.apache.wicket.extensions.markup.html.repeater.data.table.filter like ChoiceFilter and IFilterStateLocator but I did not find any examples. It seems to me that is what I need but I dont figure out how to use it I only found a post with a very short code like : final DefaultDataTable table = new DefaultDataTable(datatable, columns, provider, 30); final FilterForm form = new FilterForm(filter-form, provider); table.addTopToolbar(new FilterToolbar(table, form, provider)); form.add(table); form.add(new GoAndClearFilter(filter-buttons, form)); add(form); but I dont know what html comes with that and how to implements the filter. I have google that the phonebook application is using filter but I can't get it. I have to say that I dont know how to start with only the javadoc (how to write html? simple example?) I you have a piece of code of how to use filter and IFilterStateLocator... thx, - 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
Re: filtering a datatable
I reply to myself... I just have found http://www.nabble.com/Problems-with-clearing-of-filter-form-td16098239.html I have to include the table in a form with some form specific components (focus-restore and focus-tracker) form wicket:id=filter-form input type=hidden name=tracker wicket:id=focus-tracker/ table wicket:id=datatable/table span wicket:id=focus-restore[call to focus restore script]/span /form and here is the java : final DefaultDataTable table = new DefaultDataTable(datatable, columns, provider, 30); final FilterForm form = new FilterForm(filter-form, provider); table.addTopToolbar(new FilterToolbar(table, form, provider)); form.add(table); add(form); Next I have read in FilterToolbar that the filter are found by using columns with instances of IFilteredColumn like FilteredAbstractColumn... So I just replace the column declaration : before : new PropertyColumn(new Model(author), author, author) after (with filter) new TextFilteredPropertyColumn(new Model(author), author, author); and hop, the column header change in a texfield! great! when I enter some text I got an error (Attempted to set property value on a null object. Property expression: author Value: go) .. but it's seems better... Le mercredi 15 avril 2009 à 18:48 +0200, Julien Graglia a écrit : Hi, I try to filter rows of a datatable : I already have sort the rows very easily (using a SortableDataProvider) but now I need to filter some columns.. which seems to me a rather classic task. I have found classes in org.apache.wicket.extensions.markup.html.repeater.data.table.filter like ChoiceFilter and IFilterStateLocator but I did not find any examples. It seems to me that is what I need but I dont figure out how to use it I only found a post with a very short code like : final DefaultDataTable table = new DefaultDataTable(datatable, columns, provider, 30); final FilterForm form = new FilterForm(filter-form, provider); table.addTopToolbar(new FilterToolbar(table, form, provider)); form.add(table); form.add(new GoAndClearFilter(filter-buttons, form)); add(form); but I dont know what html comes with that and how to implements the filter. I have google that the phonebook application is using filter but I can't get it. I have to say that I dont know how to start with only the javadoc (how to write html? simple example?) I you have a piece of code of how to use filter and IFilterStateLocator... thx, -- Julien Graglia NetCeler - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org