我有一张桌子,有一系列的活动, 我班级的名字是Entry。
这是我桌上的照片
是西班牙语,但基础是相同的,所以它应该不是问题。 (过滤器HTML代码还不是很混乱,但它有效)
以下是我查找条目时得到的结果。
http://i45.tinypic.com/r1iexv.jpg
现在我的问题是我需要将结果从pic1显示/过滤到同一个表中,所以它基本上就像应用过滤器的表更新一样。
如果您需要更多信息,请链接到我的旧问题。谢谢proflux!
I have a bunch of data and I need a data filter using Grails
大多数搜索代码都在那里,
任何帮助将不胜感激!
更新
我在过滤日期时遇到问题...我有两个约会... 一个是事件发生的日期,另一个是lastUpdated,我认为这是上次修改事件时grails的关键字。任何与过滤日期相关的帮助都将非常感激。
我需要从今天的日期开始在第一张桌子上展示所有内容。如果我想找到过去的东西,我应该能够使用过滤器来找到它。
关于如何做到这一点的任何想法?
更新
所以这是我的list.gsp
http://i49.tinypic.com/291ksy1.png
这是我的searchResults.gsp,其中过滤器应用于单词“Ruta”
所以基本上所有东西看起来都很漂亮,但日期过滤器不起作用。
以下是控制器中未过滤日期的代码
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日期。
更新
好的,这是我的控制器:因为很多代码我只会发布重要的defs
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: ' ')}" /></span>
<span class="simple"><g:actionSubmit class="eliminar" action="delete" value="${message(code: 'default.button.eliminar.label', default: ' ')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Esta seguro que desea Eliminar?')}');" /></span>
</g:form>
</td>
</tr>
</g:each>
</tbody>
答案 0 :(得分:1)
听起来您想在“列表”视图中显示搜索结果,因此它们会像未经过滤一样显示在表格中。您可以重用该视图并将过滤后的结果作为实例列表传递。
您是否拥有Entry域对象的视图?如果没有,请使用grails generate-view Entry
生成一些脚手架视图。然后在你的控制器中,使你的searchResults方法看起来像这样:
def searchResults = {
def entryInstanceList = Entry.list() // replace with actual filtering logic
render(view:'list', model: [entryInstanceList: entryInstanceList])
}
答案 1 :(得分:1)
尝试使用相同的gsp同时获得结果和搜索条件......
<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 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,你应该能够弄明白。如果您遇到任何问题,请告诉我。
<强>更新强>
根据您的标准尝试这样的事情:
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)
}
}