我使用的是 grails 中的常规 datePicker,但我认为使用带有日历的 textField 更容易,因此建议我使用 Grails-UI。
我的问题是,现在,当我单击应用过滤器时,它们不起作用。不知何故,他们没有被认可。
任何帮助将不胜感激。
这是控制器的代码:
def searchResults = {
def fromCal
if(params?.lastUpdatedD) {
fromCal = Calendar.getInstance()
fromCal.setTime(params?.lastUpdatedD)
fromCal.set(Calendar.HOUR_OF_DAY,0)
fromCal.set(Calendar.MINUTE,0)
fromCal.set(Calendar.SECOND,0)
fromCal.set(Calendar.MILLISECOND,0)
}
def toCal
if(params?.lastUpdatedH) {
toCal = Calendar.getInstance()
toCal.setTime(params?.lastUpdatedH)
toCal.set(Calendar.HOUR_OF_DAY,23)
toCal.set(Calendar.MINUTE,59)
toCal.set(Calendar.SECOND,59)
toCal.set(Calendar.MILLISECOND,999)
}
def entryCriteria = Entry.createCriteria()
def results = entryCriteria.list {
and{if(params?.fechaCambioD && params?.fechaCambioH) {
between("fechaCambio", params.fechaCambioD, params.fechaCambioH)
}
if(params?.lastUpdatedD && params?.lastUpdatedH) {
between("lastUpdated", fromCal.getTime(), toCal.getTime())
}
if(params?.proyectoRutaN) {
ilike("proyectoRuta","%${params.proyectoRutaN}%")
}
}
}
render(view:'searchResults', model:['results':results, 'proyectoRutaN':params?.proyectoRutaN, 'fechaCambioD':params?.fechaCambioD, 'fechaCambioH':params?.fechaCambioH, 'lastUpdatedD':'', 'lastUpdatedH':params?.lastUpdatedH])
这是 search.gsp 中的一段代码,其中声明了 gui:datePicker
<gui:datePicker name="fechaCambioH" value="${params?.fechaCambioH}" formatString="dd/MMM/yyyy"/>
如果我将它们更改为<<gui:datePicker name="fechaCambioH" value="${params?.fechaCambioH}" precision="day" default="none" noSelection="['':'']" years="${2010..2015}"/>/>
它工作得很好,但它为我提供了 3 个下拉框,用于表示日月和年,并且我的想法是只使用一个带有日历的文本字段,以帮助它看起来更好。
提前致谢
更新
这是我在 list.gsp 中的代码
def list = {
params.max = Math.min(params.max ? params.int('max') : 10, 100)
[entryInstanceList: Entry.list(params), entryInstanceTotal: Entry.count()]
def today = Calendar.getInstance()
today.setTime(new Date())
today.set(Calendar.HOUR_OF_DAY, 0)
today.set(Calendar.MINUTE, 0)
today.set(Calendar.SECOND, 0)
today.set(Calendar.MILLISECOND, 0)
def results = Entry.findAllByFechaCambioGreaterThanEquals(today.getTime())
render(view:'list', model:['entryInstanceList':results])
所以我想知道是否可以对过滤后的内容进行相同的排序。因为现在当我单击每列的标题时,在被过滤后,它会从列表中订购每一项。如果我在每次创建新条目时都这样做,它会从今天开始对它们进行排序(仅对您所看到的内容进行排序),但是当我应用过滤器然后对其排序时,它会对列表中的每个项目进行排序,而不仅仅是显示的内容.
我觉得这听起来有点混乱,我希望你能帮助。
提前致谢!