jsp中的动态下拉框的回填方案
1. 将从数据库或者配置文件等查询出来的动态下拉框的内容作为一个list 通过request.setAttibutte(‘list’,list)的方式set到页面;
2. 当点击查询时获取当前选中的下拉框的值,然后将其request.setAttibutte(‘item’,item) 存在页面的隐藏域中;
3. 当查询完成显示页面时,js遍历list下拉框中的值是否与item相等,若相等则将其对应的option的selected属性设置为true;
这样,就实现了动态下拉框的回填工作。
4. 具体实现:
(1) Jsp页面
<td style="width:160px">
<select name="orderType"id="orderType" style="width:100%;"><!--onchange="clickSelectFlow();" -->
<c:forEach var="processConfig"items="${processInfoList}" >
<option <c:if test="cmbFlow==${processConfig.chileEle_DefineID}">selected</c:if> value="${processConfig.chileEle_DefineID}"style="tableName:${processConfig.chileEle_Table}">${processConfig.chileEle_DefineName}</option>
</c:forEach>
</select>
</td>
<td style="display:none"> <!-- display:none -->
<div><input id="procDefId"name="procDefId" value="${procDefId }" /></div>
</td>
(2) Action显示页面方法
List processInfoList = processConfigBiz.getAllFlowInfoList(request);
request.setAttribute("processInfoList", processInfoList);
(3) Action查询方法
TakenOderQueryFrom takenOrderQueryForm = (TakenOderQueryFrom)form;
String orderType = takenOrderQueryForm.getOrderType();
request.getSession().setAttribute("procDefId",orderType);
(4) Js设置属性
$(document).ready(function(){
//回填显示上一次操作的流程名称
var procDefId = $('#procDefId').val();
//alert(procDefId);
$('#orderType option').each(function(){
$this = $(this).val();
//alert($this);
if($this == procDefId){
$(this).attr('selected',true);
}
});
});