在客戶的項目中,有對記錄手動排序並保存的需求。
我的大體實現方法爲:
客戶端JSP文件中自動根據記錄數生成排序下拉列表項,用戶可以指定某個記錄的序號,並把需要保存的排序信息保存在一個隱藏字段中傳遞,代碼如下:
1: <INPUT TYPE='hidden' name='seqNoList' value=''>
2: <SELECT NAME='sortList' onchange='seqNoList.value+='<bean:write name='infoRecorder' property='recorderId' />:'+this.options[this.selectedIndex].value+',';'>
3: <SCRIPT LANGUAGE='JavaScript'>
4: <!--
5: for (var i=1;i<=<bean:write name='recorderList' />;i++){
6: if ( i == <bean:write name='infoRecorder' property='seqNo' /> ){
7: document.write('<option selected value=''+i+''>'+i+'</option>');
8: }else {
9: document.write('<option value=''+i+''>'+i+'</option>');
10: }
11: }
12: //-->
13: </SCRIPT>
14: </SELECT>
這樣,取會的記錄排序信息格式就爲
記錄編號1:序號1,記錄編號2:序號2,
在Servlet中的操作處理代碼爲
1: //更新排序信息
2: String seqNoList= request.getParameter('seqNoList');
3: if ( null != seqNoList && !seqNoList.equals(''))
4: {
5: String[] col= seqNoList.split(',');
6: //循環設置序號
7: for (int i= 0; i < col.length; i++)
8: {
9: //取得編號和指定的序號
10: String[] row = col[i].split(':');
11: int recorderId= Integer.parseInt(row[0]);
12: int seqNo = Integer.parseInt(row[1]);
13: //下面進行相關的數據庫保存操作
14: ……
15: }
16: }