jsp+js 정렬 가능한 표 구현

  ,    js:

/**
 *      
 * @param {} tableId
 * @param {} sortColumn
 * @param {} nodeType
 */
function sort(tableId, sortColumn, nodeType) {
	var table = document.getElementById(tableId);
	var tableBody = table.tBodies[0];
	var tableRows = tableBody.rows;

	var rowArray = new Array();
	for (var i = 0; i < tableRows.length; i++) {
		rowArray[i] = tableRows[i];
	}
	if (table.sortColumn == sortColumn) {
		rowArray.reverse();
	} else {
		rowArray.sort(generateCompareTR(sortColumn, nodeType));
	}
	var tbodyFragment = document.createDocumentFragment();
	for (var i = 0; i < rowArray.length; i++) {
		tbodyFragment.appendChild(rowArray[i]);
	}
	tableBody.appendChild(tbodyFragment);
	table.sortColumn = sortColumn;
}

/**
 *     
 * @param {} sortColumn
 * @param {} nodeType
 * @return {}
 */
function generateCompareTR(sortColumn, nodeType) {
	return function compareTR(trLeft, trRight) {
		var leftValue = convert(trLeft.cells[sortColumn].firstChild.nodeValue,
				nodeType);
		var rightValue = convert(
				trRight.cells[sortColumn].firstChild.nodeValue, nodeType);
		if (leftValue < rightValue) {
			return -1;
		} else {
			if (leftValue > rightValue) {
				return 1;
			} else {
				return 0;
			}
		}
	};
}

/**
 *    
 * @param {} value
 * @param {} dataType
 * @return {}
 */
function convert(value, dataType) {
	switch (dataType) {
		case "int" :
			return parseInt(value);
		case "float" :
			return parseFloat(value);
		case "date" :
			return new Date(Date.parse(value));
		default :
			return value.toString();
	}
}

그 다음 사용:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'table.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script type="text/javascript" src="${pageContext.request.contextPath}/js/sort.js"></script>
	

  </head>
  
  <body>
    <table id="theTable" align="center" border="1">  
            <thead>  
                <tr>  
                    <td>  
                          1   
                    </td>  
                    <td onclick="sort(theTable,1,'int')" style="cursor: hand;">  
                          2   
                    </td>  
                    <td onclick="sort(theTable,2,'int')" style="cursor: hand;">  
                          3   
                    </td>  
                    <td onclick="sort(theTable,3,'int')" style="cursor: hand;">   
                          4   
                    </td>  
                    <td onclick="sort(theTable,4,'int')" style="cursor: hand;">   
                          5   
                    </td>  
                    <td onclick="sort(theTable,5,'int')" style="cursor: hand;">   
                          6   
                    </td>  
                    <td onclick="sort(theTable,6,'int')" style="cursor: hand;">    
                          7   
                    </td>  
                </tr>  
            </thead>  
            <tbody>  
                <tr>  
                    <td>  
                        1   
                    </td>  
                    <td>  
                        2   
                    </td>  
                    <td>  
                        3   
                    </td>  
                    <td>  
                        4   
                    </td>  
                    <td>  
                        5   
                    </td>  
                    <td>  
                        6   
                    </td>  
                    <td>  
                        7   
                    </td>  
                </tr>  
                <tr>  
                    <td>  
                        2   
                    </td>  
                    <td>  
                        3   
                    </td>  
                    <td>  
                        4   
                    </td>  
                    <td>  
                        5   
                    </td>  
                    <td>  
                        6   
                    </td>  
                    <td>  
                        7   
                    </td>  
                    <td>  
                        1   
                    </td>  
                </tr>  
                <tr>  
                    <td>  
                        3   
                    </td>  
                    <td>  
                        4   
                    </td>  
                    <td>  
                        5   
                    </td>  
                    <td>  
                        6   
                    </td>  
                    <td>  
                        7   
                    </td>  
                    <td>  
                        1   
                    </td>  
                    <td>  
                        2   
                    </td>  
                </tr>  
                <tr>  
                    <td>  
                        4   
                    </td>  
                    <td>  
                        5   
                    </td>  
                    <td>  
                        6   
                    </td>  
                    <td>  
                        7   
                    </td>  
                    <td>  
                        1   
                    </td>  
                    <td>  
                        2   
                    </td>  
                    <td>  
                        3   
                    </td>  
                </tr>  
                <tr>  
                    <td>  
                        5   
                    </td>  
                    <td>  
                        6   
                    </td>  
                    <td>  
                        7   
                    </td>  
                    <td>  
                        1   
                    </td>  
                    <td>  
                        2   
                    </td>  
                    <td>  
                        3   
                    </td>  
                    <td>  
                        4   
                    </td>  
                </tr>  
                <tr>  
                    <td>  
                        6   
                    </td>  
                    <td>  
                        7   
                    </td>  
                    <td>  
                        1   
                    </td>  
                    <td>  
                        2   
                    </td>  
                    <td>  
                        3   
                    </td>  
                    <td>  
                        4   
                    </td>  
                    <td>  
                        5   
                    </td>  
                </tr>  
            </tbody>  
        </table>  
    </body>  

</html>

좋은 웹페이지 즐겨찾기