我再一次使用jqGrid
Struts2
和struts2-jquery plugin
。这次我想在列的搜索对话框中添加<select/>
字段,如本教程中所述here.
我构建并测试了应该返回JSP的动作,其中包含select和所有填充值,并且它工作正常,我认为该问题与jqGrid
完全相关。也许我在这里忽略了一些东西。
当我打开搜索弹出窗口并选择我要搜索的列(具有select
设置的列)时,它会触发检索数据的操作,然后会出现select
输入但是如果里面没有数据,它似乎为空,所以我有一个空的select
。
下面我发布了一些代码:
jqGrid全局配置:
<sjg:grid
id="resGrid"
altRows="false"
caption="%{getText('reservationTable.title')}"
dataType="json"
href="%{remoteurl}"
editurl="%{deleteUrl}"
pager="true"
gridModel="gridModel"
rowList="10,15,30"
rowNum="15"
navigator="true"
navigatorSearch="true"
autowidth="true"
navigatorAdd="false"
onDblClickRowTopics="rowSelect"
navigatorEdit="false"
navigatorDelete="false"
navigatorSearchOptions="{
multipleSearch: true,
closeAfterSearch: true,
afterRedraw: afterRedraw
}"
navigatorExtraButtons="{
photos : {
title : '%{getText('reservationTable.icon.photo')}',
icon: 'ui-icon-image',
onclick: showPhotos,
position: 'first'
}
}"
>
jqGrid列配置:
<sjg:gridColumn name="execution"
index="execution"
title="%{getText('execution')}"
formatter="execution"
search="true"
searchtype="select"
searchoptions="{ sopt:['eq'],
dataUrl:'%{selecturl}',
value: ':All;'}"/>
检索数据的结果(从我上面链接的教程复制,这很好用):
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page contentType="text/html; charset=UTF-8" %>
<s:select list="executionStrValues" theme="simple" emptyOption="true"/>
我已经坚持了几天而且我做了一些研究,我发现这个脚本可能很有用,因为在这个链接HERE这个问题与jqGrid讨论在Github上。我这样用过:
<script type="text/javascript">
(function() {
$.jgrid = {
defaults : {
ajaxSelectOptions: 'GET',
async: false
}
}
})();
</script>
这个其他未解决的问题也与这个话题有关:LINK
我还看到有些人建议使用formatter="select"
作为行,但如果我理解正确,我就不需要它,因为我没有将此列内联编辑为written in the documentation.
更新:操作配置
在我的<s:url>
下方触发操作返回值和操作的配置:
<s:url var="selecturl" action="getExecutionStatus" />
getExecutionStatus.action 其中ExecutionStatus
是枚举:
@ResultPath(value = "/")
public class UtilsAction extends ActionSupport {
private static final long serialVersionUID = 3672057774005126256L;
private List<String> executionStrValues;
@Action(value="getExecutionStatus", results={
@Result(name="success",location="jsp/selectExecution.jsp"),
@Result(name="input", location="jsp/error.jsp"),
@Result(name="login", location="index.jsp")
})
public String getExecutionValues(){
List<ExecutionStatus> executionValues = Arrays.asList(ExecutionStatus.values());
executionStrValues = new ArrayList<String>();
for(ExecutionStatus ex: executionValues)
executionStrValues.add(getText("executionStatus."+ex.toString()));
return SUCCESS;
}//getExecutionValues
public List<String> getExecutionStrValues() {
return executionStrValues;
}
public void setExecutionStrValues(List<String> executionStrValues) {
this.executionStrValues = executionStrValues;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}
答案 0 :(得分:0)
把你的jsp页面。我觉得它有效。
<%@taglib prefix="s" uri="/struts-tags"%>
<%@taglib prefix="sj" uri="/struts-jquery-tags"%>
<%@taglib prefix="sjg" uri="/struts-jquery-grid-tags" %>