동적으로 입력받는 폼이 있다고 하자. 아래 그림과 같다.


첫 td의 순번은 그냥 단순한 순번이다.
헌데 삭제 후 다시 추가하면 count계산 로직이 ++ 밖에 없기 때문에 1,2,3,5,8 뭐 이런식으로 띄엄띄엄 될 수 있다. 물론 1을 지우면 2부터 시작되겠지.. 미관상 좋지 않다. 삭제 할 때마다 전체 tr개수를 고려해서 세팅을 해줘야 한다.

삭제 이벤트에 아래와 같은 로직을 적용해주면 된다.

var locCnt = "<c:out value='${fn:length(resultNationPoflcList)}'/>"; //번호 메기기 위한 변수,,수정화면에서 기존 등록된 데이터 총 갯수 세팅
function removeLoc(sn){
$J("#loc_tr"+sn).remove();
var size = $J("tr[id^=loc_tr]").size();
for(var i=0; i<size; i++){ //tr번호메기기
$J("tr[id^=loc_tr]:eq("+i+") th").text(i+1);
}
locCnt = size; //번호 카운트를 현재 총 사이즈 수로 초기화
}

동적으로 생성되는 tr에는 id가 붙는다. id = "loc_tr"+고유번호
그러니까 loc_tr로 시작되는 아이디 값을 가지는 tr을 모두 구해서 사이즈를 저장한 다음,
for문으로 돌면서 tr순서대로(:eq()메소드사용) 번호를 메겨주면 된다.
그리고 총카운트는 다시 tr의 size로 초기화 한다.

재밌군..ㅎㅎ
AND


목록에 순번을 주는데 역순으로 주어야 한다. SQL상에서 rownum등의 함수를 사용하지 않고 jsp에서 계산 가능하다.

전자정부프레임워크 사용.

<tbody>
<c:set value="${paginationInfo.totalRecordCount}" var="count"/>
<c:forEach items="${codeList}" var="code">
<tr onclick="javascript:fnDetail('${code.nationId}');" style="cursor: pointer;">
<td>${count-nationCodeVO.pageIndex*nationCodeVO.recordCountPerPage+nationCodeVO.recordCountPerPage}</td>
<td>${code.cnttCode}</td>
<td>${code.nationId}</td>
<td>${code.nationNm}</td>
<td>${code.engNm}</td>
<td><fmt:formatDate pattern="yyyy.MM.dd" value="${code.updtDt}"/></td>
</tr>
<c:set var="count" value="${count-1}"/>    
</c:forEach>
</tbody>


 <!--페이지 네비게이션-->
 <div align="center">
<div>
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage"/>
</div>
</div>

CommonVO를 상속받는 VO와 페이징을 위해 던져준 paginationInfo객체를 이용한다.
CommonVO에 페이징 관련 프로퍼티와 값이 정의되어 있다. 한 페이지에 보여줄 목록 수는 recordCountPerPage = 10.

c:set에서 총 카운트를 담고 for문을 돌 때 1--을 해준다.
순번을 적는 곳에서는, 총 카운트에서 현재 페이지 인덱스와 보여줄 목록 수를 곱한 값을 빼고, 다시 보여줄 목록 수를 더해주면 된다.^^ 
AND


파일명이 한글일 때 깨짐 현상 해결... 다음과 같이!

<c:import url="/cmm/fms/selectFileInfsForUpdate.do" charEncoding="utf-8" >
<c:param name="param_atchFileId" value="${nationDt.atchFileId}" />
</c:import>

AND