我有一个要求应该有一个下拉列表包含一些年龄条件。 比如不到10天,10到30天,1个月到3个月,4个月到12个月,1到2岁之间。
我的域类包含一个属性年龄(整数)。我正在计算年龄表dob到当前日期并存储在DB中。我有搜索条件在搜索页面中根据年龄进行搜索,那么我该如何显示这些条件vales in下拉列表,当我选择一个选项时如何根据年龄显示结果。
目前我在数据库的下拉列表中显示所有年龄段,请找到代码并帮助我这样做,如果不清楚请写下评论以便我可以解释你。
这是我的下降所有的dobs
<td><span id="availableAge" ></span></td>
这是我通过ajax调用从控制器获取dobs的脚本
function generateAge(data){
var list ="<select style='width:100px' id='age' name='age'><option value=''>-Select-</option>";
var opt;
for(var i=0; i<data.ageDetails.length; i++){
opt = "<option value="+data.ageDetails[i].age+">";
opt = opt+data.ageDetails[i].age;
opt = opt+"</option>";
list = list+opt;
}
list = list+"</select>";
var listObj = document.getElementById("availableAge");
if(listObj){
listObj.innerHTML = list;
}
}
答案 0 :(得分:4)
将年龄存储在数据库中是一个坏主意,因为它一直在变化 - 更好地坚持使用DOB。
由于选项集已修复,请为其设置类似enum
的内容,使用其values()
呈现select
enum AgeCriteriaEnum { NONE, LESS_THAN_10, BETWEEN_10_AND_30, ... so on }
并且只需执行switch()
:
AgeCriteriaEnum ageEnum = AgeCriteriaEnum.valueOf(params.ageEnum)
Date today = new Date()
Patient.withCriteria {
switch(ageEnum) {
case AgeCriteriaEnum.NONE:
break;
case AgeCriteriaEnum.LESS_THAN_10:
ge('dob', today-10)
break;
case AgeCriteriaEnum.BETWEEN_10_AND_30:
lt('dob', today-10)
ge('dob', today-30)
break;
//... so on
}
}