2010-06-23 6 views
3

일련의 이벤트가있는 테이블이 있는데, 내 클래스의 이름은 Entry입니다. 여기 Grails : Grails 테이블의 데이터를 동적으로 필터링하십시오.

는 스페인어로 내 테이블의 사진입니다 만, 기본은 동일 그래서 그것은 문제가되지 않습니다. (필터 HTML 코드는 아직 엉망이지만 작동하지만 작동하지 않습니다)

및 여기에 항목을 찾을 때 얻을 수있는 결과가 있습니다.

http://i45.tinypic.com/r1iexv.jpg

지금 내 문제는 내가 결과가 PIC1에서 같은 테이블에 필터링/표시하기 때문에이 필터를 적용 테이블 업데이트처럼 기본적으로 될 필요가 있다는 것입니다.

자세한 정보가 필요하면 여기 내 오래된 질문 링크가 있습니다. 감사합니다 proflux! 검색 코드의 대부분이

I have a bunch of data and I need a data filter using Grails

어떤 도움을 크게 감상 할 수있다!

UPDATE :

내가 하나는 이벤트가 일어날 것입니다 날짜입니다 ... 나는 두 날짜가 ...하지만 날짜를 필터링하는 문제가 있고, 다른 하나는 lastUpdated되는 나는 이벤트를 마지막으로 수정했을 때 grails에 대한 키워드라고 생각합니다. 날짜 필터링과 관련된 도움을 주시면 감사하겠습니다.

오늘의 날짜부터 첫 번째 테이블에 모든 것을 표시해야합니다. 과거에서 뭔가를 찾고 싶다면 필터를 사용하여 찾을 수 있어야합니다.

방법에 대한 아이디어가 있으십니까?

는 UPDATE : 그래서 여기

내 list.gsp는

http://i49.tinypic.com/291ksy1.png

이며, 여기에 단어 "루타"그래서

적용 필터 내 searchResults.gsp입니다 기본적으로 모든 것이 멋지게 보이지만 예쁜 필터는 작동하지 않습니다. 여기

def searchResults = { 
    def entryCriteria = Entry.createCriteria() 
    def results = entryCriteria.list { 
     if(params?.proyectoRuta) { 
      ilike("proyectoRuta","%${params.proyectoRuta}%") 
      } 

     } 
     if(params?.day) { 
      eq("fechaCambio", params.day) 
     } 
     render(view:'searchResults', model:['results':results]) 
} 

단어를 필터링되지만 날짜

proyectoRuta 제목이 될 것입니다 및 fechaCambio가에 표시된 날짜 될 수 없습니다 날짜를 필터링하지 않는 컨트롤러에 코드입니다 첫 번째 열. lastUpdated 날짜를 아직 필터링하지 않았습니다.

UPDATE :

그래서 여기 내 컨트롤러가 좋아 : 코드를 많이이기 때문에 난 단지 중요한 인증 된 정의

def search = { 
    render(view:'search') 

} 

def searchResults = { 
    def entryCriteria = Entry.createCriteria() 
    def results = entryCriteria.list { 
     if(params?.fechaCambioD && params?.fechaCambioH) { 
      between("fechaCambio", params.fechaCambioD, params.fechaCambioH) 
      } 

     if(params?.lastUpdatedD && params?.lastUpdatedH) { 
      between("lastUpdated", params.lastUpdatedD, params.lastUpdatedH) 
      } 

     if(params?.proyectoRutaN) { 
      ilike("proyectoRuta","%${params.proyectoRutaN}%") 
      }    
     } 
     render(view:'searchResults', model:['results':results, 'proyectoRutaN':params?.proyectoRutaN, 'fechaCambioD':params?.fechaCambioD, 'fechaCambioH':params?.fechaCambioH, 'lastUpdatedD':params?.lastUpdatedD, 'lastUpdatedH':params?.lastUpdatedH]) 
} 
} 

를 게시 할 예정입니다 그리고 여기 searchResults.gsp

<tbody> 
       <g:each in="${results}"> 

         <td><g:formatDate format="dd-MMMM-yyyy" date="${it.fechaCambio}" /></td> 
         <td><b>${it.proyectoRuta}</b></td> 
         <td>${it.summary}</td> 
         <td><g:formatDate format="dd-MMM-yyyy HH:mm z" date="${it.lastUpdated}" /></td> 
         <td> 
         <g:form> 
          <g:hiddenField name="id" value="${it?.id}" /> 
          <span class="simple"><g:actionSubmit class="editar" action="edit" value="${message(code: 'default.button.editar.label', default: '&nbsp;&nbsp;&nbsp;')}" /></span> 
          <span class="simple"><g:actionSubmit class="eliminar" action="delete" value="${message(code: 'default.button.eliminar.label', default: '&nbsp;&nbsp;&nbsp;')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Esta seguro que desea Eliminar?')}');" /></span> 
         </g:form> 
         </td> 
        </tr> 
       </g:each> 
      </tbody> 
입니다

답변

1

은 결과와 검색 조건에 동일한 GSP를 사용하여이 시도 : 그런 다음 컨트롤러에서이 같이 당신의 SearchResult 방법 모습 뭔가를 만들 폐쇄 :

def search = { 
     render(view:'search') 
    } 

    def searchResults = { 
     def entryCriteria = Entry.createCriteria() 
     def results = entryCriteria.list { 
      if(params?.title) { 
       ilike("title", "%${params.title}%") 
      } 
     } 
     render(view:'search', model:['results':results, 
            'title':params?.title, 
            'startTime':params?.startTime]) 
    } 

이 난 정말 빠른 썼다 빠른 데모에서, 그러나 정보에서 내가 다른 질문에 준하고 Grails Reference Documentation 기준 가야를 사용하는 방법에 ries, 당신은 그것을 알아낼 수 있어야합니다. 어떤 문제가 생기면 알려줘.

업데이트 : 기준 사이에이 같은

시도 뭔가 :

def entryCriteria = Entry.createCriteria() 
def results = entryCriteria.list { 
    if(params?.title) { 
     ilike("title", "%${params.title}%") 
    } 
    if(params?.day) { 
     between("day", params.day, params.day+1) 
    } 
} 
+0

좋은 옵션인지 모르겠습니다 ... searchResults.gsp에 동일한 HTML과 CSS를 list.gsp에 부여했습니다. . 그래서 오늘부터 날짜를 걸러내는 "결과"를 보여주기 위해 list.gsp를 작업해야한다고 생각합니다. 어떤 의미의 Doest? – randomizertech

+1

lastUpdated는 Grails의 특별한 변수이지만 실제로 원하는대로 할 수 있습니다. 오브젝트가 수정되어 저장 될 때마다 현재 시간으로 그 값을 갱신합니다. – proflux

+0

당신이 Grails에서 시작하고 도움을주고 싶어하는 것처럼 보입니다. 그러나 나는 당신이 스스로 배우지 않고 많이 도움을주고 싶지 않습니다. 위의 스크린 샷 (list.gsp?)을 고려하여 내가 제공 한 gsp와 비교하십시오. 둘 다 상단에 검색 양식이 있고 하단에 결과가 있습니다. 나는 당신이 다른 질문의 정보, 당신이 여기에 올린 것, 그리고 여기에 게시 한 것들 중에서 당신이 원하는 것을 당신의 앱이 만들 수 있도록 모든 것을 가지고 있다고 말할 수 있습니다. 너는 단지 그것을 함께 모으는 방법을 알아야하고, 너는 붙어 있으면 나에게 알려주고, 너는 벗 이도록 도와 주겠다. – proflux

1

검색 결과를 '목록'보기에 표시하려는 것처럼 들리므로 필터링되지 않은 것처럼 표에 표시됩니다. 해당 뷰를 재사용하고 필터링 된 결과를 인스턴스 목록으로 전달할 수 있습니다.

엔트리 도메인 개체에 대한보기가 있습니까? 그렇지 않은 경우 grails generate-view Entry으로 일부 스캐 폴딩 뷰를 생성하십시오. 컨트롤러에 대한 ... 다음

<html> 
<body> 
    <h1>Search Criteria</h1> 

    <g:form controller="entry" action="searchResults"> 
     Title: <g:textField name="title" value="${title}" /> 
     Date: <g:datePicker name="startTime" value="${startTime}" precision="day" /> 
     <g:submitButton name="submit" value="Search" /> 
    </g:form> 
    <g:if test="${results}"> 
     <h1>Search Results</h1> 
     <table> 
      <tr> 
       <th>Title</th> 
       <th>Start Date</th> 
      </tr> 
      <g:each in="${results}"> 
       <tr> 
        <td>${it.title}</td> 
        <td>${it.startTime}</td> 
       </tr> 
      </g:each> 
     </table> 
    </g:if> 
</body> 
</html> 

def searchResults = { 
    def entryInstanceList = Entry.list() // replace with actual filtering logic 
    render(view:'list', model: [entryInstanceList: entryInstanceList]) 
} 
+0

네, 잘 모든 것을 가지고, 감사합니다. 그래도 한 가지 문제가 있습니다. 모두를 위해 질문을 업데이트 할 것입니다 ... – randomizertech