在做项目的时候,碰到了级联操作问题,由于对公司所用东西不熟悉,导致两次都浪费不少时间,这次记录一下,以备查阅
1.首先我把前台页面粘贴过来,我要通过餐馆来控制所在区域,因此在餐馆下拉框中添加了onChange事件
<tr height="30">
<td>@{Orderplugin.Restaurant.RestaurantName} : </td>
<td>
<z:select name="RestaurantCode" id="RestaurantCode"
verify="Int&&NotNull" value="${RestaurantCode}"
style="width:143px" onChange="initBelongArea(this.value)"
method="Dish.getRestaurantCodeOptions" defaultBlank="true">
</z:select>
</td>
</tr>
<tr>
<td>@{Orderplugin.Restaurant.BelongArea} : </td>
<td>
<z:select name="BranchInnerCode" id="BranchInnerCode"
verify="NotNull" value="${BranchInnerCode}"
style="width:143px"
method="Dish.getBranchInnerCodeOptions" defaultBlank="true">
</z:select>
</td>
</tr>
2.onChange事件代码
<script type="text/javascript">
function initBelongArea(value){
Selector.setParam("BranchInnerCode","RestaurantCode",value); //设置Selector的某参数值
Selector.loadData("BranchInnerCode");
}
</script>
3.接下来就是后台方法
@Priv(DishPriv.MenuID)
public DataTable getBranchInnerCodeOptions() {
String restaurantCode=$V("RestaurantCode");
Q q=new Q("select RestaurantName from ZDRestaurant where RestaurantCode=?",restaurantCode);
DataTable dt=q.executeDataTable();
List<String> codes=new ArrayList<String>();
if(dt.getRowCount()>0){
String restaurantName=dt.getString(0, 0);
q=new Q("select BranchInnerCode from ZDRestaurant where RestaurantName=?",restaurantName);
dt=q.executeDataTable();
if(dt.getRowCount()>0){
for(int i=0;i<dt.getRowCount();i++){
codes.add(dt.getString(i, 0));
}
}
}
return new Q("select BranchInnerCode,Name from ZDBranch").where().in("BranchInnerCode", codes).fetch();
}
另外:以后碰到问题,先去官网知识库中去找答案,官网网址:zving.com
进到开发者中心进行查阅