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