您的位置:首页 > 其它

如何动态的制作级联菜单(下)

2017-08-02 17:18 162 查看


上一期给大家介绍了如何编写一个动态级联的下拉框组,这一期为大家简述如何将下拉框组中的数据存储到数据库中。

其实这个问题的关键点在于信息数量的不确定,以及如何获取这些数据。如下图:



父选项框组的数量是确定的,而子选项框组中的数据则是可以通过新增按钮和删除按钮进行增删的,父选项框组和子选项框组的对应关系是一对多的。解决这样的问题无非两种思路,其一是把一化为多,另一种是把多化为一。为了数据存入数据库后再次读取的方便,我们选择将多组子选项框中的数据化为一组自选项框数据。

前面有说到问题的难点在于获取子选项框组的数量,即为子选项框组的行数。此处我用的方法是在前端代码中直接获取行数,并将其传值至controller中。方法如下:

1、首先,

var testItemProcessA = $("#testItemTbody");
var rows = testItemProcessA.find("tr").length;


其中testItemTbody为子选项框所在的tbody,通过获取tbody,找到其中tr的数量,即为子选项框的行数。

2、其次,
<input type='hidden' name='itemRows' value=rows >


通过隐藏输入域进行传值,在界面中不会显示该输入域,但是的确存在,这样在controller中可以通过request.getParameterValues()的方法获取每一次新增项目的子选项框组的行数构成的数组。

获取到了自选项框组的行数后,重点转移到了如何将多组数据化为一组数据进行存储,此处使用数组和for循环便可以实现。

int itemCount = testItem.length;//新增项目数目
String[] itemRows = request.getParameterValues("itemRows");//每组项目中子选项组数
String[] testItem = request.getParameterValues("testItem");//父选项框
String[] itemParam = request.getParameterValues("itemParam");//子选项框1
String[] itemStandard = request.getParameterValues("itemStandard");//子选项框2
String[] judgement = request.getParameterValues("judgement");//子输入域
//用于存储每组项目整合后对应子选项框的数据
String[] itemParamA = new String[itemCount];
String[] itemStandardA = new String[itemCount];
String[] judgementA = new String[itemCount];
if(testItem!=null){
int currentIndex = 0;//代表未整合的数据中当前读取数据的行数
for (int i=0; i<testItem.length; i++){
itemParamA[i] = itemParam[currentIndex];
itemStandardA[i] = itemStandard[currentIndex];
judgementA[i] = judgement[currentIndex];
int rows = Integer.parseInt(itemRows[i]);
for (int j=1; j<rows; j++){
itemParamA[i] += "," + itemParam[currentIndex+j];
itemStandardA[i] += "," + itemStandard[currentIndex+j];
judgementA[i] += "," + judgement[currentIndex+j];
}
currentIndex = currentIndex + rows;
}
}


欢迎关注JavaTree一起探讨学习
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: