You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by orkun ozen <sk...@gmail.com> on 2010/01/17 12:12:39 UTC

Re: filtering a datatable



julien Graglia wrote:
> 
> 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-unsubscribe@wicket.apache.org
>> > For additional commands, e-mail: users-help@wicket.apache.org
>> >
>> >
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
> 
> -- 
> Julien Graglia
> NetCeler
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@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-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org