Index: trunk/grails-app/controllers/AssetSubItemDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/AssetSubItemDetailedController.groovy	(revision 335)
+++ trunk/grails-app/controllers/AssetSubItemDetailedController.groovy	(revision 336)
@@ -1,7 +1,10 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+import org.codehaus.groovy.grails.commons.ConfigurationHolder
 
 @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_AssetManager'])
 class AssetSubItemDetailedController extends BaseController {
 
+    def filterService
+    def exportService
     def assetSubItemService
 
@@ -11,4 +14,69 @@
     @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_AssetManager', 'ROLE_AssetUser'])
     def index = { redirect(controller: "assetDetailed", params:params) }
+
+    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_AssetManager', 'ROLE_AssetUser'])
+    def search = {
+
+        if(session.assetSearchParamsMax)
+            params.max = session.assetSearchParamsMax
+
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  1000)
+
+        def assetSubItemInstanceList = []
+        def assetSubItemInstanceTotal
+        def filterParams = [:]
+
+        // Quick Search:
+        if(!params.filter) {
+            assetSubItemInstanceList = AssetSubItem.list( params )
+            assetSubItemInstanceTotal = AssetSubItem.count()
+            filterParams.quickSearch = params.quickSearch
+        }
+        else {
+        // filterPane:
+            assetSubItemInstanceList = filterService.filter( params, AssetSubItem )
+            assetSubItemInstanceTotal = filterService.count( params, AssetSubItem )
+            filterParams = com.zeddware.grails.plugins.filterpane.FilterUtils.extractFilterParams(params)
+        }
+
+        // export plugin:
+        if(params?.format && params.format != "html") {
+
+            def dateFmt = { date ->
+                formatDate(format: "EEE, dd-MMM-yyyy", date: date)
+            }
+
+            String title = "AssetSubItem List."
+
+            response.contentType = ConfigurationHolder.config.grails.mime.types[params.format]
+            response.setHeader("Content-disposition", "attachment; filename=assets.${params.extension}")
+            List fields = ["name",
+                                "description"]
+            Map labels = ["name": "AssetSubItem",
+                                "description": "Description"]
+
+            Map formatters = [:]
+            Map parameters = [title: title, separator: ","]
+
+            exportService.export(params.format,
+                                                response.outputStream,
+                                                assetSubItemInstanceList.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) },
+                                                fields,
+                                                labels,
+                                                formatters,
+                                                parameters)
+        }
+
+        // Add some basic params to filterParams.
+        filterParams.max = params.max
+        filterParams.offset = params.offset?.toInteger() ?: 0
+        filterParams.sort = params.sort ?: "id"
+        filterParams.order = params.order ?: "desc"
+
+        return[ assetSubItemInstanceList: assetSubItemInstanceList,
+                assetSubItemInstanceTotal: assetSubItemInstanceTotal,
+                filterParams: filterParams ]
+
+    } // end search()
 
     @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_AssetManager', 'ROLE_AssetUser'])
Index: trunk/grails-app/views/assetSubItemDetailed/create.gsp
===================================================================
--- trunk/grails-app/views/assetSubItemDetailed/create.gsp	(revision 335)
+++ trunk/grails-app/views/assetSubItemDetailed/create.gsp	(revision 336)
@@ -9,7 +9,8 @@
     <body>
         <div class="nav">
-            <h1>Create Sub Item</h1>
+            <span class="menuButton"><g:link class="list" action="search">Sub Item Search</g:link></span>
         </div>
         <div class="body">
+            <h1>Create Sub Item</h1>
             <g:render template="/shared/messages" />
             <g:hasErrors bean="${assetSubItemInstance}">
Index: trunk/grails-app/views/assetSubItemDetailed/edit.gsp
===================================================================
--- trunk/grails-app/views/assetSubItemDetailed/edit.gsp	(revision 335)
+++ trunk/grails-app/views/assetSubItemDetailed/edit.gsp	(revision 336)
@@ -9,7 +9,8 @@
     <body>
         <div class="nav">
-            <h1>Edit Sub Item</h1>
+            <span class="menuButton"><g:link class="list" action="search">Sub Item Search</g:link></span>
         </div>
         <div class="body">
+            <h1>Edit Sub Item</h1>
             <g:render template="/shared/messages" />
             <g:hasErrors bean="${assetSubItemInstance}">
Index: trunk/grails-app/views/assetSubItemDetailed/search.gsp
===================================================================
--- trunk/grails-app/views/assetSubItemDetailed/search.gsp	(revision 336)
+++ trunk/grails-app/views/assetSubItemDetailed/search.gsp	(revision 336)
@@ -0,0 +1,87 @@
+
+
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="layout" content="main" />
+        <title>AssetSubItem Search</title>
+        <nav:resources override="true"/>
+        <filterpane:includes />
+        <export:resource />
+    </head>
+    <body>
+        <div class="nav">
+            <span class="menuButton"><g:link class="create" action="create">New Sub Item</g:link></span>
+        </div>
+        <div class="body">
+            <h1>Sub Item Search</h1>
+            <g:render template="/shared/messages" />
+
+            <filterpane:currentCriteria domainBean="AssetSubItem"
+                                    action="search"
+                                    dateFormat="${'EEE, dd-MMM-yyyy'}"
+                                    removeImgDir="images" 
+                                    removeImgFile="bullet_delete.png"
+                                    title="Search"/>
+
+            <div class="paginateButtons">
+                Results: ${assetSubItemInstanceList.size()} / ${assetSubItemInstanceTotal}
+                <span class="searchButtons">
+                    <filterpane:filterButton text="Search" appliedText="Change Search" />
+                </span>
+            </div>
+
+            <div class="list">
+                <table>
+                    <thead>
+                        <tr>
+                        
+                   	        <g:sortableColumn property="id" title="Id" params="${filterParams}" />
+
+                             <g:sortableColumn property="name" title="Name" params="${filterParams}" />
+                        
+                            <g:sortableColumn property="description" title="Description" params="${filterParams}" />
+
+                            <g:sortableColumn property="isActive" title="Is Active" params="${filterParams}" />
+
+                            <th></th>
+                   	    
+                        </tr>
+                    </thead>
+                    <tbody>
+                    <g:each in="${assetSubItemInstanceList}" status="i" var="assetSubItemInstance">
+                        <tr class="${(i % 2) == 0 ? 'clickableOdd' : 'clickableEven'}" onclick='window.location = "${request.getContextPath()}/assetSubItemDetailed/show/${assetSubItemInstance.id}"'/>
+                        
+                            <td>${fieldValue(bean:assetSubItemInstance, field:'id')}</td>
+
+                            <td>${fieldValue(bean:assetSubItemInstance, field:'name')}</td>
+
+                            <td>${fieldValue(bean:assetSubItemInstance, field:'description')}</td>
+
+                            <td>${fieldValue(bean:assetSubItemInstance, field:'isActive')}</td>
+
+                            <td>
+                                <g:link action="show" id="${assetSubItemInstance.id}">
+                                    <img  src="${resource(dir:'images/skin',file:'database_go.png')}" alt="Show" />
+                                </g:link>
+                            </td>
+                        
+                        </tr>
+                    </g:each>
+                    </tbody>
+                </table>
+            </div>
+            <div class="paginateButtons">
+                <g:paginate total="${assetSubItemInstanceTotal}" params="${filterParams}" />
+            </div>
+
+            <export:formats  params="${filterParams}" formats="['csv', 'excel', 'pdf', 'rtf']"/>
+
+            <filterpane:filterPane domainBean="AssetSubItem"
+                                    title="Search"
+                                    action="search"
+                                    class="overlayPane"
+                                    excludeProperties="" />
+        </div> <!-- end body div -->
+    </body>
+</html>
Index: trunk/grails-app/views/assetSubItemDetailed/show.gsp
===================================================================
--- trunk/grails-app/views/assetSubItemDetailed/show.gsp	(revision 335)
+++ trunk/grails-app/views/assetSubItemDetailed/show.gsp	(revision 336)
@@ -9,7 +9,9 @@
     <body>
         <div class="nav">
-            <h1>Show Sub Item</h1>
+            <span class="menuButton"><g:link class="list" action="search">Sub Item Search</g:link></span>
+            <span class="menuButton"><g:link class="create" action="create">New Sub Item</g:link></span>
         </div>
         <div class="body">
+            <h1>Show Sub Item</h1>
             <g:render template="/shared/messages" />
             <div class="dialog">
