Grails multi-select插件不工作
我的grails应用程序中有6个下拉列表是使用g select标记编写的,现在我需要在所有下拉列表中进行多个选择,但我无法使用 首先,我在Buildconfig.groovy中包含了插件-multiselect和资源,使用以下行:Grails multi-select插件不工作,grails,multi-select,Grails,Multi Select,我的grails应用程序中有6个下拉列表是使用g select标记编写的,现在我需要在所有下拉列表中进行多个选择,但我无法使用 首先,我在Buildconfig.groovy中包含了插件-multiselect和资源,使用以下行: compile ":multi-select:0.2" runtime ":resources:1.2.2" 以下代码在我的“index.gsp”文件中 我的早期代码和基本单选下拉列表: <g:select from="['AFFILIATES', 'CSE'
compile ":multi-select:0.2"
runtime ":resources:1.2.2"
以下代码在我的“index.gsp”文件中
我的早期代码和基本单选下拉列表:
<g:select from="['AFFILIATES', 'CSE','DISPLAYADS','EMAIL','MOBILEWEB','OTHERS','ORGANIC','SEO', 'SEM']" name="mv" id = "mv"
onchange="${remoteFunction(
controller:'Com',
action:'ajaxGetMv',
// params:'\'mv=\' + escape(this.value)',
params:'\'mv=\'+this.value+\'&department=\'+$(\'department\').value+\'&device=\'+$(\'device\').value+\'&browser=\'+$(\'browser\').value+\'&platform=\'+$(\'platform\').value+\'&time_period=\'+$(\'time_period\').value+\'&metric=\'+$(\'metric\').value',
onSuccess: 'printpgtyp(data)')}"
></g:select>
现在,索引和控制器只针对一个值进行通信,我如何让它们针对多个选择进行通信?
我认为控制器必须在这里进行更改Grails2.x支持多选而无需插件。下面是文档中的一个示例。multi-select的UI不是最好的
// create multiple select
<g:select name="cars"
from="${Car.list()}"
value="${person?.cars*.id}"
optionKey="id"
multiple="true" />
//创建多个选择
以下是我如何访问视图和控制器中的多选复选框的示例:
<g:each in="${Car.findAllByActive(true)}" var="car">
<div class="span4 checkbox">
<g:checkBox name="cars" value="${car.id}" checked="${car in instance?.cars}" />
<label>${car.name}</label>
</div>
</g:each>
params.cars.each { it ->
instance.cars.add(Car.findById(it as Long))
}
${car.name}
params.cars.each{it->
instance.cars.add(Car.findById(尽可能长))
}
我尝试了这个,我得到了一个不同类型的下拉列表,在这里我可以通过按control键来选择multiple(这很奇怪)。multi-select下拉列表到底应该如何实现?而且,它仍然只获取第一个选定的值。检查我的更新答案。默认的html multi-select不是最好的UI。我使用了复选框,并用上面的控制器代码处理它们,因为更新没有像我预期的那样工作。多视图是cos of multiple=“true”,您所说的第一个值是什么意思?你的意思是其他参数,如部门等没有出现?
<g:select from="['AFFILIATES', 'CSE','DISPLAYADS','EMAIL','MOBILEWEB','OTHERS','ORGANIC','SEO', 'SEM']" name="mv" id = "mv" multiple="true"
onchange="${remoteFunction(
controller:'Com',
action:'ajaxGetMv',
// params:'\'mv=\' + escape(this.value)',
params:'\'mv=\'+this.value+\'&department=\'+$(\'department\').value+\'&device=\'+$(\'device\').value+\'&browser=\'+$(\'browser\').value+\'&platform=\'+$(\'platform\').value+\'&time_period=\'+$(\'time_period\').value+\'&metric=\'+$(\'metric\').value',
onSuccess: 'printpgtyp(data)')}"
></g:select>
def ajaxGetMv = {
if(params.metric == 'Marketing visits')
{
def com = Com.executeQuery("select p.date_hour, p.visits, case when visits_ly IN (0,null) THEN 0 ELSE ((visits/visits_ly - 1)*100) END as yoy, case when visits_lw IN (0,null) THEN 0 ELSE ((visits/visits_lw - 1)*100) END as wow, p.mv, p.browser, p.department, p.platform, p.device, p.time_period from Com p where p.department = ? and p.device = ? and p.browser = ? and p.platform = ? and p.mv = ? and p.time_period = ? order by col_0_0_ asc ",[params.department, params.device, params.browser, params.platform, params.mv, params.time_period])
render com as JSON
}
//.........else if and so on for all my metrics
// create multiple select
<g:select name="cars"
from="${Car.list()}"
value="${person?.cars*.id}"
optionKey="id"
multiple="true" />
<g:each in="${Car.findAllByActive(true)}" var="car">
<div class="span4 checkbox">
<g:checkBox name="cars" value="${car.id}" checked="${car in instance?.cars}" />
<label>${car.name}</label>
</div>
</g:each>
params.cars.each { it ->
instance.cars.add(Car.findById(it as Long))
}