list.gsp with filter and pagination

View: New views
11 Messages — Rating Filter:   Alert me  

list.gsp with filter and pagination

by Pascal DeMilly-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

I am trying to add a search filter (based on the definite guide to Grails) to
one of my list.gsp.

    def search = {
            if (params?.search == 'clear') {
                    params.filter = ''
            }
            redirect (view: list, params: params)
    }

   def list = {
        def items

        if(!params.max) params.max = 20
        if (params?.filter) {
            def criteria = Item.createCriteria()
            items = criteria.list(params) {
                or {
                        ilike ('sku', "%${params.filter}%")
                        ilike ('description', "%${params.filter}%")
                        ilike ('model', "%${params.filter}%")
                        ilike ('primaryVendor', "%${params.filter}%")
                }
            }
        }
        else
            items = Item.list (params)

        render (view: 'list', model: [ itemList: items, filter:
params.filter ], params: params)
    }

The problem is that when the user press the pagination, the filter is lost.
How can I access the view model from the controller or how can I make the
pagination to remember the filter value

TIA

Pascal

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Re: list.gsp with filter and pagination

by Lauk Daniel :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Add the params attribute to the paginate tag.

Cheers,
DJ

Pascal Demilly wrote:

> Hi,
>
> I am trying to add a search filter (based on the definite guide to Grails) to
> one of my list.gsp.
>
>     def search = {
>             if (params?.search == 'clear') {
>                     params.filter = ''
>             }
>             redirect (view: list, params: params)
>     }
>
>    def list = {
>         def items
>
>         if(!params.max) params.max = 20
>         if (params?.filter) {
>             def criteria = Item.createCriteria()
>             items = criteria.list(params) {
>                 or {
>                         ilike ('sku', "%${params.filter}%")
>                         ilike ('description', "%${params.filter}%")
>                         ilike ('model', "%${params.filter}%")
>                         ilike ('primaryVendor', "%${params.filter}%")
>                 }
>             }
>         }
>         else
>             items = Item.list (params)
>
>         render (view: 'list', model: [ itemList: items, filter:
> params.filter ], params: params)
>     }
>
> The problem is that when the user press the pagination, the filter is lost.
> How can I access the view model from the controller or how can I make the
> pagination to remember the filter value
>
> TIA
>
> Pascal
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email
>
>

--
Daniel J. Lauk

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Re: list.gsp with filter and pagination

by Pascal DeMilly-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Thanks Daniel. I tried that with sortableColumn as



On Friday 15 August 2008 12:55:03 am Daniel J. Lauk wrote:

> Add the params attribute to the paginate tag.
>
> Cheers,
> DJ
>
> Pascal Demilly wrote:
> > Hi,
> >
> > I am trying to add a search filter (based on the definite guide to
> > Grails) to one of my list.gsp.
> >
> >     def search = {
> >             if (params?.search == 'clear') {
> >                     params.filter = ''
> >             }
> >             redirect (view: list, params: params)
> >     }
> >
> >    def list = {
> >         def items
> >
> >         if(!params.max) params.max = 20
> >         if (params?.filter) {
> >             def criteria = Item.createCriteria()
> >             items = criteria.list(params) {
> >                 or {
> >                         ilike ('sku', "%${params.filter}%")
> >                         ilike ('description', "%${params.filter}%")
> >                         ilike ('model', "%${params.filter}%")
> >                         ilike ('primaryVendor', "%${params.filter}%")
> >                 }
> >             }
> >         }
> >         else
> >             items = Item.list (params)
> >
> >         render (view: 'list', model: [ itemList: items, filter:
> > params.filter ], params: params)
> >     }
> >
> > The problem is that when the user press the pagination, the filter is
> > lost. How can I access the view model from the controller or how can I
> > make the pagination to remember the filter value
> >
> > TIA
> >
> > Pascal
> >
> > ---------------------------------------------------------------------
> > To unsubscribe from this list, please visit:
> >
> >     http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Parent Message unknown Re: list.gsp with filter and pagination

by Pascal DeMilly-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

(resent because of slippery fingers :-)

Thanks Daniel. I had tried that with sortableColumn when I read the code in
RenderTagLib that used attr.params like that:

<g:sortableColumn property="description" title="Description"
params="$params" />

but got an error

groovy.lang.MissingMethodException: No signature of method:
java.util.LinkedHashMap.putAll() is applicable for argument types:
(org.codehaus.groovy.runtime.GStringImpl) values:
{["max":20, "action":"list", "controller":"item"]}
        at
home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_item_list_gsp.run(home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_item_list_gsp:47)
list: ["max":20, "action":"list", "controller":"item"]

How would you pass that attributes then? How do you specify a map in GSP?

In the meantime I recreated my own paginate which put the filter value in the
linkParams and that works. Now I am working on the sorting.

Thanks

Pascal




On Friday 15 August 2008 12:55:03 am Daniel J. Lauk wrote:

> Add the params attribute to the paginate tag.
>
> Cheers,
> DJ
>
> Pascal Demilly wrote:
> > Hi,
> >
> > I am trying to add a search filter (based on the definite guide to
> > Grails) to one of my list.gsp.
> >
> >     def search = {
> >             if (params?.search == 'clear') {
> >                     params.filter = ''
> >             }
> >             redirect (view: list, params: params)
> >     }
> >
> >    def list = {
> >         def items
> >
> >         if(!params.max) params.max = 20
> >         if (params?.filter) {
> >             def criteria = Item.createCriteria()
> >             items = criteria.list(params) {
> >                 or {
> >                         ilike ('sku', "%${params.filter}%")
> >                         ilike ('description', "%${params.filter}%")
> >                         ilike ('model', "%${params.filter}%")
> >                         ilike ('primaryVendor', "%${params.filter}%")
> >                 }
> >             }
> >         }
> >         else
> >             items = Item.list (params)
> >
> >         render (view: 'list', model: [ itemList: items, filter:
> > params.filter ], params: params)
> >     }
> >
> > The problem is that when the user press the pagination, the filter is
> > lost. How can I access the view model from the controller or how can I
> > make the pagination to remember the filter value
> >
> > TIA
> >
> > Pascal
> >
> > ---------------------------------------------------------------------
> > To unsubscribe from this list, please visit:
> >
> >     http://xircles.codehaus.org/manage_email

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Parent Message unknown Re: list.gsp with filter and pagination

by Darryl Pentz :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

That should be:

<g:sortableColumn property="description" title="Description"
params="${params}" />

I would think. i.e. you forgot the curly braces { } around params.



----- Original Message ----
From: Pascal Demilly <list.grails@...>
To: user@...
Sent: Friday, August 15, 2008 10:41:52 AM
Subject: Re: [grails-user] list.gsp with filter and pagination

(resent because of slippery fingers :-)

Thanks Daniel. I had tried that with sortableColumn when I read the code in
RenderTagLib that used attr.params like that:

<g:sortableColumn property="description" title="Description"
params="$params" />

but got an error

groovy.lang.MissingMethodException: No signature of method:
java.util.LinkedHashMap.putAll() is applicable for argument types:
(org.codehaus.groovy.runtime.GStringImpl) values:
{["max":20, "action":"list", "controller":"item"]}
        at
home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_item_list_gsp.run(home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_item_list_gsp:47)
list: ["max":20, "action":"list", "controller":"item"]

How would you pass that attributes then? How do you specify a map in GSP?

In the meantime I recreated my own paginate which put the filter value in the
linkParams and that works. Now I am working on the sorting.

Thanks

Pascal




On Friday 15 August 2008 12:55:03 am Daniel J. Lauk wrote:

> Add the params attribute to the paginate tag.
>
> Cheers,
> DJ
>
> Pascal Demilly wrote:
> > Hi,
> >
> > I am trying to add a search filter (based on the definite guide to
> > Grails) to one of my list.gsp.
> >
> >     def search = {
> >             if (params?.search == 'clear') {
> >                     params.filter = ''
> >             }
> >             redirect (view: list, params: params)
> >     }
> >
> >    def list = {
> >         def items
> >
> >         if(!params.max) params.max = 20
> >         if (params?.filter) {
> >             def criteria = Item.createCriteria()
> >             items = criteria.list(params) {
> >                 or {
> >                         ilike ('sku', "%${params.filter}%")
> >                         ilike ('description', "%${params.filter}%")
> >                         ilike ('model', "%${params.filter}%")
> >                         ilike ('primaryVendor', "%${params.filter}%")
> >                 }
> >             }
> >         }
> >         else
> >             items = Item.list (params)
> >
> >         render (view: 'list', model: [ itemList: items, filter:
> > params.filter ], params: params)
> >     }
> >
> > The problem is that when the user press the pagination, the filter is
> > lost. How can I access the view model from the controller or how can I
> > make the pagination to remember the filter value
> >
> > TIA
> >
> > Pascal
> >
> > ---------------------------------------------------------------------
> > To unsubscribe from this list, please visit:
> >
> >    http://xircles.codehaus.org/manage_email

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


     

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Parent Message unknown Re: list.gsp with filter and pagination

by Pascal DeMilly-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Here is what I finally end up doing.

in list.gsp I added at the top:

<style type="text/css">
.filterBar {
        margin-top:1px;
        float:right;
        vertical-align: middle;
}
</style>

and inserted this after <body>

            <span class="filterBar"><g:form controller="item" action="search">
                    <label>Filter:
                        <g:textField name="filter" value="${filter}"/>
                        <g:submitButton name="search" value="go"/>
                        <g:submitButton name="search" value="clear"/>
                    </label>
                </g:form>
            </span>

Then change the sortableColumn and paginate button as follow

<tr>
<g:sortableColumn property="id" title="Id" params="${params}"/>
<g:sortableColumn property="sku" title="Sku" params="${params}"/>
<g:sortableColumn property="description" title="Description"
params="${params}" />
 </tr>

<div class="paginateButtons">
       <g:paginate total="${Item.count()}" params="${params}"/>
</div>

however there is a bug in sortableColumn. If you include params you need to
add at line 458 of
grails-1.0.3/src/groovy/org/codehaus/groovy/grails/plugins/web/taglib/RenderTagLib.groovy

linkParams.sort = property

because sort is already defined in params. If you don't overwrite it in
linkParams then all your column will have the same sort property.

I haven't found yet the way to make that change sticky. (modifying that groovy
file in place doesn't seem to be seen by the runtime) So in the meantime I
created a new taglib with that change and things are looking great

I am now going to try to make it a template

Hope that helps

Pascal

On Friday 15 August 2008 04:57:29 am Ramanathan, Kannan wrote:

> Hi Pascal,
>
> I am exactly looking for such feature in my app. Can you please post
> sample code (especially how to remember the filter value when pagination
> is clicked)?
>
> Thanks for your help.
>
> -----Original Message-----
> From: Pascal Demilly [mailto:list.grails@...]
> Sent: Friday, August 15, 2008 4:42 AM
> To: user@...
> Subject: Re: [grails-user] list.gsp with filter and pagination
>
> (resent because of slippery fingers :-)
>
> Thanks Daniel. I had tried that with sortableColumn when I read the code
> in RenderTagLib that used attr.params like that:
>
> <g:sortableColumn property="description" title="Description"
> params="$params" />
>
> but got an error
>
> groovy.lang.MissingMethodException: No signature of method:
> java.util.LinkedHashMap.putAll() is applicable for argument types:
> (org.codehaus.groovy.runtime.GStringImpl) values:
> {["max":20, "action":"list", "controller":"item"]}
>         at
> home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_item_list_
> gsp.run(home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_it
> em_list_gsp:47)
> list: ["max":20, "action":"list", "controller":"item"]
>
> How would you pass that attributes then? How do you specify a map in
> GSP?
>
> In the meantime I recreated my own paginate which put the filter value
> in the linkParams and that works. Now I am working on the sorting.
>
> Thanks
>
> Pascal
>
> On Friday 15 August 2008 12:55:03 am Daniel J. Lauk wrote:
> > Add the params attribute to the paginate tag.
> >
> > Cheers,
> > DJ
> >
> > Pascal Demilly wrote:
> > > Hi,
> > >
> > > I am trying to add a search filter (based on the definite guide to
> > > Grails) to one of my list.gsp.
> > >
> > >     def search = {
> > >             if (params?.search == 'clear') {
> > >                     params.filter = ''
> > >             }
> > >             redirect (view: list, params: params)
> > >     }
> > >
> > >    def list = {
> > >         def items
> > >
> > >         if(!params.max) params.max = 20
> > >         if (params?.filter) {
> > >             def criteria = Item.createCriteria()
> > >             items = criteria.list(params) {
> > >                 or {
> > >                         ilike ('sku', "%${params.filter}%")
> > >                         ilike ('description', "%${params.filter}%")
> > >                         ilike ('model', "%${params.filter}%")
> > >                         ilike ('primaryVendor',
>
> "%${params.filter}%")
>
> > >                 }
> > >             }
> > >         }
> > >         else
> > >             items = Item.list (params)
> > >
> > >         render (view: 'list', model: [ itemList: items, filter:
> > > params.filter ], params: params)
> > >     }
> > >
> > > The problem is that when the user press the pagination, the filter
> > > is lost. How can I access the view model from the controller or how
> > > can I make the pagination to remember the filter value
> > >
> > > TIA
> > >
> > > Pascal
> > >
> > > --------------------------------------------------------------------
> > > - To unsubscribe from this list, please visit:
> > >
> > >     http://xircles.codehaus.org/manage_email
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Parent Message unknown RE: list.gsp with filter and pagination

by Ramanathan, Kannan :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks Pascal, I was stuck at sortableColumn. I will try this out.

-----Original Message-----
From: Pascal Demilly [mailto:list.grails@...]
Sent: Friday, August 15, 2008 10:58 AM
To: user@...
Cc: Ramanathan, Kannan [CMB-IT]
Subject: Re: [grails-user] list.gsp with filter and pagination


Here is what I finally end up doing.

in list.gsp I added at the top:

<style type="text/css">
.filterBar {
        margin-top:1px;
        float:right;
        vertical-align: middle;
}
</style>

and inserted this after <body>

            <span class="filterBar"><g:form controller="item"
action="search">
                    <label>Filter:
                        <g:textField name="filter" value="${filter}"/>
                        <g:submitButton name="search" value="go"/>
                        <g:submitButton name="search" value="clear"/>
                    </label>
                </g:form>
            </span>

Then change the sortableColumn and paginate button as follow

<tr>
<g:sortableColumn property="id" title="Id" params="${params}"/>
<g:sortableColumn property="sku" title="Sku" params="${params}"/>
<g:sortableColumn property="description" title="Description"
params="${params}" />
 </tr>

<div class="paginateButtons">
       <g:paginate total="${Item.count()}" params="${params}"/> </div>

however there is a bug in sortableColumn. If you include params you need
to add at line 458 of
grails-1.0.3/src/groovy/org/codehaus/groovy/grails/plugins/web/taglib/Re
nderTagLib.groovy

linkParams.sort = property

because sort is already defined in params. If you don't overwrite it in
linkParams then all your column will have the same sort property.

I haven't found yet the way to make that change sticky. (modifying that
groovy file in place doesn't seem to be seen by the runtime) So in the
meantime I created a new taglib with that change and things are looking
great

I am now going to try to make it a template

Hope that helps

Pascal

On Friday 15 August 2008 04:57:29 am Ramanathan, Kannan wrote:

> Hi Pascal,
>
> I am exactly looking for such feature in my app. Can you please post
> sample code (especially how to remember the filter value when
> pagination is clicked)?
>
> Thanks for your help.
>
> -----Original Message-----
> From: Pascal Demilly [mailto:list.grails@...]
> Sent: Friday, August 15, 2008 4:42 AM
> To: user@...
> Subject: Re: [grails-user] list.gsp with filter and pagination
>
> (resent because of slippery fingers :-)
>
> Thanks Daniel. I had tried that with sortableColumn when I read the
> code in RenderTagLib that used attr.params like that:
>
> <g:sortableColumn property="description" title="Description"
> params="$params" />
>
> but got an error
>
> groovy.lang.MissingMethodException: No signature of method:
> java.util.LinkedHashMap.putAll() is applicable for argument types:
> (org.codehaus.groovy.runtime.GStringImpl) values:
> {["max":20, "action":"list", "controller":"item"]}
>         at
> home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_item_lis
> t_
> gsp.run(home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_
> it
> em_list_gsp:47)
> list: ["max":20, "action":"list", "controller":"item"]
>
> How would you pass that attributes then? How do you specify a map in
> GSP?
>
> In the meantime I recreated my own paginate which put the filter value

> in the linkParams and that works. Now I am working on the sorting.
>
> Thanks
>
> Pascal
>
> On Friday 15 August 2008 12:55:03 am Daniel J. Lauk wrote:
> > Add the params attribute to the paginate tag.
> >
> > Cheers,
> > DJ
> >
> > Pascal Demilly wrote:
> > > Hi,
> > >
> > > I am trying to add a search filter (based on the definite guide to
> > > Grails) to one of my list.gsp.
> > >
> > >     def search = {
> > >             if (params?.search == 'clear') {
> > >                     params.filter = ''
> > >             }
> > >             redirect (view: list, params: params)
> > >     }
> > >
> > >    def list = {
> > >         def items
> > >
> > >         if(!params.max) params.max = 20
> > >         if (params?.filter) {
> > >             def criteria = Item.createCriteria()
> > >             items = criteria.list(params) {
> > >                 or {
> > >                         ilike ('sku', "%${params.filter}%")
> > >                         ilike ('description',
"%${params.filter}%")

> > >                         ilike ('model', "%${params.filter}%")
> > >                         ilike ('primaryVendor',
>
> "%${params.filter}%")
>
> > >                 }
> > >             }
> > >         }
> > >         else
> > >             items = Item.list (params)
> > >
> > >         render (view: 'list', model: [ itemList: items, filter:
> > > params.filter ], params: params)
> > >     }
> > >
> > > The problem is that when the user press the pagination, the filter

> > > is lost. How can I access the view model from the controller or
> > > how can I make the pagination to remember the filter value
> > >
> > > TIA
> > >
> > > Pascal
> > >
> > > ------------------------------------------------------------------
> > > --
> > > - To unsubscribe from this list, please visit:
> > >
> > >     http://xircles.codehaus.org/manage_email
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Re: list.gsp with filter and pagination

by Marcel Overdijk :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Don't forget to raise a JIRA issue for this.

Pascal DeMilly-4 wrote:
Here is what I finally end up doing.

in list.gsp I added at the top:

<style type="text/css">
.filterBar {
        margin-top:1px;
        float:right;
        vertical-align: middle;
}
</style>

and inserted this after <body>

            <g:form controller="item" action="search">
                    <label>Filter:
                        <g:textField name="filter" value="${filter}"/>
                        <g:submitButton name="search" value="go"/>
                        <g:submitButton name="search" value="clear"/>
                    </label>
                </g:form>
           


Then change the sortableColumn and paginate button as follow

<tr>
<g:sortableColumn property="id" title="Id" params="${params}"/>
<g:sortableColumn property="sku" title="Sku" params="${params}"/>
<g:sortableColumn property="description" title="Description"
params="${params}" />
 </tr>

<div class="paginateButtons">
       <g:paginate total="${Item.count()}" params="${params}"/>
</div>

however there is a bug in sortableColumn. If you include params you need to
add at line 458 of
grails-1.0.3/src/groovy/org/codehaus/groovy/grails/plugins/web/taglib/RenderTagLib.groovy

linkParams.sort = property

because sort is already defined in params. If you don't overwrite it in
linkParams then all your column will have the same sort property.

I haven't found yet the way to make that change sticky. (modifying that groovy
file in place doesn't seem to be seen by the runtime) So in the meantime I
created a new taglib with that change and things are looking great

I am now going to try to make it a template

Hope that helps

Pascal

On Friday 15 August 2008 04:57:29 am Ramanathan, Kannan wrote:
> Hi Pascal,
>
> I am exactly looking for such feature in my app. Can you please post
> sample code (especially how to remember the filter value when pagination
> is clicked)?
>
> Thanks for your help.
>
> -----Original Message-----
> From: Pascal Demilly [mailto:list.grails@newgenesys.com]
> Sent: Friday, August 15, 2008 4:42 AM
> To: user@grails.codehaus.org
> Subject: Re: [grails-user] list.gsp with filter and pagination
>
> (resent because of slippery fingers :-)
>
> Thanks Daniel. I had tried that with sortableColumn when I read the code
> in RenderTagLib that used attr.params like that:
>
> <g:sortableColumn property="description" title="Description"
> params="$params" />
>
> but got an error
>
> groovy.lang.MissingMethodException: No signature of method:
> java.util.LinkedHashMap.putAll() is applicable for argument types:
> (org.codehaus.groovy.runtime.GStringImpl) values:
> {["max":20, "action":"list", "controller":"item"]}
>         at
> home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_item_list_
> gsp.run(home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_it
> em_list_gsp:47)
> list: ["max":20, "action":"list", "controller":"item"]
>
> How would you pass that attributes then? How do you specify a map in
> GSP?
>
> In the meantime I recreated my own paginate which put the filter value
> in the linkParams and that works. Now I am working on the sorting.
>
> Thanks
>
> Pascal
>
> On Friday 15 August 2008 12:55:03 am Daniel J. Lauk wrote:
> > Add the params attribute to the paginate tag.
> >
> > Cheers,
> > DJ
> >
> > Pascal Demilly wrote:
> > > Hi,
> > >
> > > I am trying to add a search filter (based on the definite guide to
> > > Grails) to one of my list.gsp.
> > >
> > >     def search = {
> > >             if (params?.search == 'clear') {
> > >                     params.filter = ''
> > >             }
> > >             redirect (view: list, params: params)
> > >     }
> > >
> > >    def list = {
> > >         def items
> > >
> > >         if(!params.max) params.max = 20
> > >         if (params?.filter) {
> > >             def criteria = Item.createCriteria()
> > >             items = criteria.list(params) {
> > >                 or {
> > >                         ilike ('sku', "%${params.filter}%")
> > >                         ilike ('description', "%${params.filter}%")
> > >                         ilike ('model', "%${params.filter}%")
> > >                         ilike ('primaryVendor',
>
> "%${params.filter}%")
>
> > >                 }
> > >             }
> > >         }
> > >         else
> > >             items = Item.list (params)
> > >
> > >         render (view: 'list', model: [ itemList: items, filter:
> > > params.filter ], params: params)
> > >     }
> > >
> > > The problem is that when the user press the pagination, the filter
> > > is lost. How can I access the view model from the controller or how
> > > can I make the pagination to remember the filter value
> > >
> > > TIA
> > >
> > > Pascal
> > >
> > > --------------------------------------------------------------------
> > > - To unsubscribe from this list, please visit:
> > >
> > >     http://xircles.codehaus.org/manage_email
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Re: list.gsp with filter and pagination

by Pascal DeMilly-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


I forget to include the controller changes

    def list = {
        def items

        if(!params.max) params.max = 10

        if (params?.filter) {
            def criteria = Item.createCriteria()
            items = criteria.list(params) {
                or {
                        ilike ('sku', "%${params.filter}%")
                        ilike ('description', "%${params.filter}%")
                        ilike ('model', "%${params.filter}%")
                        ilike ('primaryVendor', "%${params.filter}%")
                }
            }
        }
        else {
            items = Item.list (params)
        }
        render (view: 'list', model: [ itemList: items, filter:
params.filter ], params: params)
    }

    def search = {
            if (params?.search == 'clear')
                    params.filter = ''

            redirect (view: list, params: params)
    }


On Friday 15 August 2008 08:06:10 am Ramanathan, Kannan wrote:

> Thanks Pascal, I was stuck at sortableColumn. I will try this out.
>
> -----Original Message-----
> From: Pascal Demilly [mailto:list.grails@...]
> Sent: Friday, August 15, 2008 10:58 AM
> To: user@...
> Cc: Ramanathan, Kannan [CMB-IT]
> Subject: Re: [grails-user] list.gsp with filter and pagination
>
>
> Here is what I finally end up doing.
>
> in list.gsp I added at the top:
>
> <style type="text/css">
> .filterBar {
>         margin-top:1px;
>         float:right;
>         vertical-align: middle;
> }
> </style>
>
> and inserted this after <body>
>
>             <span class="filterBar"><g:form controller="item"
> action="search">
>                     <label>Filter:
>                         <g:textField name="filter" value="${filter}"/>
>                         <g:submitButton name="search" value="go"/>
>                         <g:submitButton name="search" value="clear"/>
>                     </label>
>                 </g:form>
>             </span>
>
> Then change the sortableColumn and paginate button as follow
>
> <tr>
> <g:sortableColumn property="id" title="Id" params="${params}"/>
> <g:sortableColumn property="sku" title="Sku" params="${params}"/>
> <g:sortableColumn property="description" title="Description"
> params="${params}" />
>  </tr>
>
> <div class="paginateButtons">
>        <g:paginate total="${Item.count()}" params="${params}"/> </div>
>
> however there is a bug in sortableColumn. If you include params you need
> to add at line 458 of
> grails-1.0.3/src/groovy/org/codehaus/groovy/grails/plugins/web/taglib/Re
> nderTagLib.groovy
>
> linkParams.sort = property
>
> because sort is already defined in params. If you don't overwrite it in
> linkParams then all your column will have the same sort property.
>
> I haven't found yet the way to make that change sticky. (modifying that
> groovy file in place doesn't seem to be seen by the runtime) So in the
> meantime I created a new taglib with that change and things are looking
> great
>
> I am now going to try to make it a template
>
> Hope that helps
>
> Pascal
>
> On Friday 15 August 2008 04:57:29 am Ramanathan, Kannan wrote:
> > Hi Pascal,
> >
> > I am exactly looking for such feature in my app. Can you please post
> > sample code (especially how to remember the filter value when
> > pagination is clicked)?
> >
> > Thanks for your help.
> >
> > -----Original Message-----
> > From: Pascal Demilly [mailto:list.grails@...]
> > Sent: Friday, August 15, 2008 4:42 AM
> > To: user@...
> > Subject: Re: [grails-user] list.gsp with filter and pagination
> >
> > (resent because of slippery fingers :-)
> >
> > Thanks Daniel. I had tried that with sortableColumn when I read the
> > code in RenderTagLib that used attr.params like that:
> >
> > <g:sortableColumn property="description" title="Description"
> > params="$params" />
> >
> > but got an error
> >
> > groovy.lang.MissingMethodException: No signature of method:
> > java.util.LinkedHashMap.putAll() is applicable for argument types:
> > (org.codehaus.groovy.runtime.GStringImpl) values:
> > {["max":20, "action":"list", "controller":"item"]}
> >         at
> > home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_item_lis
> > t_
> > gsp.run(home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_
> > it
> > em_list_gsp:47)
> > list: ["max":20, "action":"list", "controller":"item"]
> >
> > How would you pass that attributes then? How do you specify a map in
> > GSP?
> >
> > In the meantime I recreated my own paginate which put the filter value
> >
> > in the linkParams and that works. Now I am working on the sorting.
> >
> > Thanks
> >
> > Pascal
> >
> > On Friday 15 August 2008 12:55:03 am Daniel J. Lauk wrote:
> > > Add the params attribute to the paginate tag.
> > >
> > > Cheers,
> > > DJ
> > >
> > > Pascal Demilly wrote:
> > > > Hi,
> > > >
> > > > I am trying to add a search filter (based on the definite guide to
> > > > Grails) to one of my list.gsp.
> > > >
> > > >     def search = {
> > > >             if (params?.search == 'clear') {
> > > >                     params.filter = ''
> > > >             }
> > > >             redirect (view: list, params: params)
> > > >     }
> > > >
> > > >    def list = {
> > > >         def items
> > > >
> > > >         if(!params.max) params.max = 20
> > > >         if (params?.filter) {
> > > >             def criteria = Item.createCriteria()
> > > >             items = criteria.list(params) {
> > > >                 or {
> > > >                         ilike ('sku', "%${params.filter}%")
> > > >                         ilike ('description',
>
> "%${params.filter}%")
>
> > > >                         ilike ('model', "%${params.filter}%")
> > > >                         ilike ('primaryVendor',
> >
> > "%${params.filter}%")
> >
> > > >                 }
> > > >             }
> > > >         }
> > > >         else
> > > >             items = Item.list (params)
> > > >
> > > >         render (view: 'list', model: [ itemList: items, filter:
> > > > params.filter ], params: params)
> > > >     }
> > > >
> > > > The problem is that when the user press the pagination, the filter
> > > >
> > > > is lost. How can I access the view model from the controller or
> > > > how can I make the pagination to remember the filter value
> > > >
> > > > TIA
> > > >
> > > > Pascal
> > > >
> > > > ------------------------------------------------------------------
> > > > --
> > > > - To unsubscribe from this list, please visit:
> > > >
> > > >     http://xircles.codehaus.org/manage_email
> >
> > ---------------------------------------------------------------------
> > To unsubscribe from this list, please visit:
> >
> >     http://xircles.codehaus.org/manage_email
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Re: list.gsp with filter and pagination

by Pascal DeMilly-4 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Will do as soon as I find how to do that. I don't see a link on the main page
to JIRA. Any pointers?

On Friday 15 August 2008 08:22:48 am Marcel Overdijk wrote:

> Don't forget to raise a JIRA issue for this.
>
> Pascal DeMilly-4 wrote:
> > Here is what I finally end up doing.
> >
> > in list.gsp I added at the top:
> >
> > <style type="text/css">
> > .filterBar {
> >         margin-top:1px;
> >         float:right;
> >         vertical-align: middle;
> > }
> > </style>
> >
> > and inserted this after <body>
> >
> >             <g:form controller="item" action="search">
> >                     <label>Filter:
> >                         <g:textField name="filter" value="${filter}"/>
> >                         <g:submitButton name="search" value="go"/>
> >                         <g:submitButton name="search" value="clear"/>
> >                     </label>
> >                 </g:form>
> >
> >
> > Then change the sortableColumn and paginate button as follow
> >
> > <tr>
> > <g:sortableColumn property="id" title="Id" params="${params}"/>
> > <g:sortableColumn property="sku" title="Sku" params="${params}"/>
> > <g:sortableColumn property="description" title="Description"
> > params="${params}" />
> >  </tr>
> >
> > <div class="paginateButtons">
> >        <g:paginate total="${Item.count()}" params="${params}"/>
> > </div>
> >
> > however there is a bug in sortableColumn. If you include params you need
> > to
> > add at line 458 of
> > grails-1.0.3/src/groovy/org/codehaus/groovy/grails/plugins/web/taglib/Ren
> >derTagLib.groovy
> >
> > linkParams.sort = property
> >
> > because sort is already defined in params. If you don't overwrite it in
> > linkParams then all your column will have the same sort property.
> >
> > I haven't found yet the way to make that change sticky. (modifying that
> > groovy
> > file in place doesn't seem to be seen by the runtime) So in the meantime
> > I created a new taglib with that change and things are looking great
> >
> > I am now going to try to make it a template
> >
> > Hope that helps
> >
> > Pascal
> >
> > On Friday 15 August 2008 04:57:29 am Ramanathan, Kannan wrote:
> >> Hi Pascal,
> >>
> >> I am exactly looking for such feature in my app. Can you please post
> >> sample code (especially how to remember the filter value when pagination
> >> is clicked)?
> >>
> >> Thanks for your help.
> >>
> >> -----Original Message-----
> >> From: Pascal Demilly [mailto:list.grails@...]
> >> Sent: Friday, August 15, 2008 4:42 AM
> >> To: user@...
> >> Subject: Re: [grails-user] list.gsp with filter and pagination
> >>
> >> (resent because of slippery fingers :-)
> >>
> >> Thanks Daniel. I had tried that with sortableColumn when I read the code
> >> in RenderTagLib that used attr.params like that:
> >>
> >> <g:sortableColumn property="description" title="Description"
> >> params="$params" />
> >>
> >> but got an error
> >>
> >> groovy.lang.MissingMethodException: No signature of method:
> >> java.util.LinkedHashMap.putAll() is applicable for argument types:
> >> (org.codehaus.groovy.runtime.GStringImpl) values:
> >> {["max":20, "action":"list", "controller":"item"]}
> >>         at
> >> home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_item_list_
> >> gsp.run(home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_it
> >> em_list_gsp:47)
> >> list: ["max":20, "action":"list", "controller":"item"]
> >>
> >> How would you pass that attributes then? How do you specify a map in
> >> GSP?
> >>
> >> In the meantime I recreated my own paginate which put the filter value
> >> in the linkParams and that works. Now I am working on the sorting.
> >>
> >> Thanks
> >>
> >> Pascal
> >>
> >> On Friday 15 August 2008 12:55:03 am Daniel J. Lauk wrote:
> >> > Add the params attribute to the paginate tag.
> >> >
> >> > Cheers,
> >> > DJ
> >> >
> >> > Pascal Demilly wrote:
> >> > > Hi,
> >> > >
> >> > > I am trying to add a search filter (based on the definite guide to
> >> > > Grails) to one of my list.gsp.
> >> > >
> >> > >     def search = {
> >> > >             if (params?.search == 'clear') {
> >> > >                     params.filter = ''
> >> > >             }
> >> > >             redirect (view: list, params: params)
> >> > >     }
> >> > >
> >> > >    def list = {
> >> > >         def items
> >> > >
> >> > >         if(!params.max) params.max = 20
> >> > >         if (params?.filter) {
> >> > >             def criteria = Item.createCriteria()
> >> > >             items = criteria.list(params) {
> >> > >                 or {
> >> > >                         ilike ('sku', "%${params.filter}%")
> >> > >                         ilike ('description', "%${params.filter}%")
> >> > >                         ilike ('model', "%${params.filter}%")
> >> > >                         ilike ('primaryVendor',
> >>
> >> "%${params.filter}%")
> >>
> >> > >                 }
> >> > >             }
> >> > >         }
> >> > >         else
> >> > >             items = Item.list (params)
> >> > >
> >> > >         render (view: 'list', model: [ itemList: items, filter:
> >> > > params.filter ], params: params)
> >> > >     }
> >> > >
> >> > > The problem is that when the user press the pagination, the filter
> >> > > is lost. How can I access the view model from the controller or how
> >> > > can I make the pagination to remember the filter value
> >> > >
> >> > > TIA
> >> > >
> >> > > Pascal
> >> > >
> >> > > --------------------------------------------------------------------
> >> > > - To unsubscribe from this list, please visit:
> >> > >
> >> > >     http://xircles.codehaus.org/manage_email
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe from this list, please visit:
> >>
> >>     http://xircles.codehaus.org/manage_email
> >
> > ---------------------------------------------------------------------
> > To unsubscribe from this list, please visit:
> >
> >     http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email



Re: list.gsp with filter and pagination

by Marcel Overdijk :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

http://jira.codehaus.org/browse/GRAILS

Cheers,
Marcel

Pascal DeMilly-4 wrote:
Will do as soon as I find how to do that. I don't see a link on the main page
to JIRA. Any pointers?

On Friday 15 August 2008 08:22:48 am Marcel Overdijk wrote:
> Don't forget to raise a JIRA issue for this.
>
> Pascal DeMilly-4 wrote:
> > Here is what I finally end up doing.
> >
> > in list.gsp I added at the top:
> >
> > <style type="text/css">
> > .filterBar {
> >         margin-top:1px;
> >         float:right;
> >         vertical-align: middle;
> > }
> > </style>
> >
> > and inserted this after <body>
> >
> >             <g:form controller="item" action="search">
> >                     <label>Filter:
> >                         <g:textField name="filter" value="${filter}"/>
> >                         <g:submitButton name="search" value="go"/>
> >                         <g:submitButton name="search" value="clear"/>
> >                     </label>
> >                 </g:form>
> >
> >
> > Then change the sortableColumn and paginate button as follow
> >
> > <tr>
> > <g:sortableColumn property="id" title="Id" params="${params}"/>
> > <g:sortableColumn property="sku" title="Sku" params="${params}"/>
> > <g:sortableColumn property="description" title="Description"
> > params="${params}" />
> >  </tr>
> >
> > <div class="paginateButtons">
> >        <g:paginate total="${Item.count()}" params="${params}"/>
> > </div>
> >
> > however there is a bug in sortableColumn. If you include params you need
> > to
> > add at line 458 of
> > grails-1.0.3/src/groovy/org/codehaus/groovy/grails/plugins/web/taglib/Ren
> >derTagLib.groovy
> >
> > linkParams.sort = property
> >
> > because sort is already defined in params. If you don't overwrite it in
> > linkParams then all your column will have the same sort property.
> >
> > I haven't found yet the way to make that change sticky. (modifying that
> > groovy
> > file in place doesn't seem to be seen by the runtime) So in the meantime
> > I created a new taglib with that change and things are looking great
> >
> > I am now going to try to make it a template
> >
> > Hope that helps
> >
> > Pascal
> >
> > On Friday 15 August 2008 04:57:29 am Ramanathan, Kannan wrote:
> >> Hi Pascal,
> >>
> >> I am exactly looking for such feature in my app. Can you please post
> >> sample code (especially how to remember the filter value when pagination
> >> is clicked)?
> >>
> >> Thanks for your help.
> >>
> >> -----Original Message-----
> >> From: Pascal Demilly [mailto:list.grails@newgenesys.com]
> >> Sent: Friday, August 15, 2008 4:42 AM
> >> To: user@grails.codehaus.org
> >> Subject: Re: [grails-user] list.gsp with filter and pagination
> >>
> >> (resent because of slippery fingers :-)
> >>
> >> Thanks Daniel. I had tried that with sortableColumn when I read the code
> >> in RenderTagLib that used attr.params like that:
> >>
> >> <g:sortableColumn property="description" title="Description"
> >> params="$params" />
> >>
> >> but got an error
> >>
> >> groovy.lang.MissingMethodException: No signature of method:
> >> java.util.LinkedHashMap.putAll() is applicable for argument types:
> >> (org.codehaus.groovy.runtime.GStringImpl) values:
> >> {["max":20, "action":"list", "controller":"item"]}
> >>         at
> >> home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_item_list_
> >> gsp.run(home_pdemilly_NetBeansProjects_grails_test_5_grails_app_views_it
> >> em_list_gsp:47)
> >> list: ["max":20, "action":"list", "controller":"item"]
> >>
> >> How would you pass that attributes then? How do you specify a map in
> >> GSP?
> >>
> >> In the meantime I recreated my own paginate which put the filter value
> >> in the linkParams and that works. Now I am working on the sorting.
> >>
> >> Thanks
> >>
> >> Pascal
> >>
> >> On Friday 15 August 2008 12:55:03 am Daniel J. Lauk wrote:
> >> > Add the params attribute to the paginate tag.
> >> >
> >> > Cheers,
> >> > DJ
> >> >
> >> > Pascal Demilly wrote:
> >> > > Hi,
> >> > >
> >> > > I am trying to add a search filter (based on the definite guide to
> >> > > Grails) to one of my list.gsp.
> >> > >
> >> > >     def search = {
> >> > >             if (params?.search == 'clear') {
> >> > >                     params.filter = ''
> >> > >             }
> >> > >             redirect (view: list, params: params)
> >> > >     }
> >> > >
> >> > >    def list = {
> >> > >         def items
> >> > >
> >> > >         if(!params.max) params.max = 20
> >> > >         if (params?.filter) {
> >> > >             def criteria = Item.createCriteria()
> >> > >             items = criteria.list(params) {
> >> > >                 or {
> >> > >                         ilike ('sku', "%${params.filter}%")
> >> > >                         ilike ('description', "%${params.filter}%")
> >> > >                         ilike ('model', "%${params.filter}%")
> >> > >                         ilike ('primaryVendor',
> >>
> >> "%${params.filter}%")
> >>
> >> > >                 }
> >> > >             }
> >> > >         }
> >> > >         else
> >> > >             items = Item.list (params)
> >> > >
> >> > >         render (view: 'list', model: [ itemList: items, filter:
> >> > > params.filter ], params: params)
> >> > >     }
> >> > >
> >> > > The problem is that when the user press the pagination, the filter
> >> > > is lost. How can I access the view model from the controller or how
> >> > > can I make the pagination to remember the filter value
> >> > >
> >> > > TIA
> >> > >
> >> > > Pascal
> >> > >
> >> > > --------------------------------------------------------------------
> >> > > - To unsubscribe from this list, please visit:
> >> > >
> >> > >     http://xircles.codehaus.org/manage_email
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe from this list, please visit:
> >>
> >>     http://xircles.codehaus.org/manage_email
> >
> > ---------------------------------------------------------------------
> > To unsubscribe from this list, please visit:
> >
> >     http://xircles.codehaus.org/manage_email



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email