这是我去年自己做的一个项目里的代码的一部分,把它提出来整理整理。 效果如下:
主要代码:
editTable.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<jsp:directive.page import="com.example.Song" />
<%@page import="java.util.ArrayList"%>
<html>
<head>
<style type="text/css" media="all">
@import url("css/screen.css");
</style>
<jsp:scriptlet>
Song song0=new Song(1,"Losing Grip",1);
Song song1=new Song(2,"Complicated",2);
Song song2=new Song(3,"Sk8er Boi",3);
Song song3=new Song(4,"Im With You",4);
Song song4=new Song(5,"Mobile",5);
ArrayList songValuesList = new ArrayList();
songValuesList.add(song0);
songValuesList.add(song1);
songValuesList.add(song2);
songValuesList.add(song3);
songValuesList.add(song4);
request.setAttribute("songValuesList", songValuesList );
</jsp:scriptlet>
<script type="text/javascript">
function performChange(inputObj){
var count = 0;
if(inputObj.parentNode.parentNode.childNodes[count].nodeName=="#text")
count++;
inputObj.parentNode.parentNode.childNodes[count].innerHTML=inputObj.value;
}
function onCheckRows(checkBoxObj){
var rowObj = checkBoxObj.parentNode.parentNode;
if(checkBoxObj.checked==true){
rowCheck(rowObj,"edit");
}else{
rowCheck(rowObj,"view");
}
}
function rowCheck(rowObj,value){
var j = 0;
var count = 1;
for(var i = 1 ; i<=2; i++){
if(rowObj.cells[i].childNodes[j].nodeName=="#text")
{
j++;
count++;
}if(value=="edit"){
rowObj.cells[i].childNodes[j].style.display = "none";
rowObj.cells[i].childNodes[j+count].style.display = "";
}
else{
rowObj.cells[i].childNodes[j].style.display = "";
rowObj.cells[i].childNodes[j+count].style.display = "none";
}
}
}
var preNum=new Array();
var i=0;
function deleteSong(num){
var count=0;
if(i==0){
document.getElementById('resList').deleteRow(num);
preNum[i++]=num;
count++;
}else{
for(var j=0;j<i;j++){
if(preNum[j]<num){
count++;
}
}
document.getElementById('resList').deleteRow(num-count);
preNum[i++]=num;
}
}
function invertSelected(){
var handleEl = document.getElementById("Handler");
var els = document.getElementsByName("checkEdit");
for(i=0;i<els.length;i++){
els[i].checked=handleEl.checked;
onCheckRows(els[i]);
}
}
var newRecordCnt = 0;
function addRow(){
var tabel=document.getElementById('resList');
var rowCount=tabel.rows.length;
if(tabel==null){
alert("tabel==null");
}
var tableRowTmp = tabel.insertRow(-1);
addRowStyle(tableRowTmp);
var newRowTmp = tableRowTmp.insertCell(-1);//
var objString = '<input name="checkEdit" onclick="onCheckRows(this);" type="checkbox" checked="true">';
var obj = document.createElement(objString);
newRowTmp.appendChild(obj);
tableRowTmp.appendChild(newRowTmp);
var size5 = new Array(1,20,15);
for(i = 0; i < size5.length; i++){
newRowTmp = tableRowTmp.insertCell(-1);
//first div for display
objString = '<div style="display:none;"></div>';
obj = document.createElement(objString);
if(i==0||i==2){
obj.innerHTML='';
}
newRowTmp.appendChild(obj);
objString = '<div></div>';
obj = document.createElement(objString);
if(i==0){
objString = "<input onchange='performChange(this)' type='text'"
+ "name='newSongValuesList[" + newRecordCnt + "].sequenceNumber"
+ "' value='' size='" + size5[i]+"' maxlength='40' />";
inputObj = document.createElement(objString);
obj.appendChild(inputObj);
}else if(i==1){
objString = "<input onchange='performChange(this)' type='text'"
+ "name='newSongValuesList[" + newRecordCnt + "].name"
+ "' value='' size='" + size5[i]+"' maxlength='40' />";
inputObj = document.createElement(objString);
obj.appendChild(inputObj);
}
else if(i==2){
var objString = "<a href='javascript:deleteSong(" + rowCount + ");'"
+ "></a>";
inputObj = document.createElement(objString);
inputObj.innerHTML="delete";
obj.appendChild(inputObj);
}
newRowTmp.appendChild(obj);
tableRowTmp.appendChild(newRowTmp);
}
newRecordCnt++;
}
function addRowStyle(rowObj){
if(rowObj.rowIndex % 2 == 1){
rowObj.setAttribute("className", "");
}else{
rowObj.setAttribute("className", "even");
}
}
</script>
</head>
<body>
<display:table pagesize="" requestURI=""
class="its" name="songValuesList" sort="page" id="resList" >
<display:column title="" style="width:2%;" >
<input onclick="onCheckRows(this);" type="checkbox" name="checkEdit"
value="${songValuesList[resList_rowNum - 1].sequenceNumber}"/>
<input type="hidden" name="songValuesList[${resList_rowNum - 1}].id"
value="${songValuesList[resList_rowNum - 1].id}"/>
</display:column>
<display:column style="width:8%;" title="Sequence" headerClass="sortable">
<div>${songValuesList[resList_rowNum - 1].sequenceNumber}</div>
<div style="display:none;">
<input onchange="performChange(this)" type="text" name="songValuesList[${resList_rowNum - 1}].sequenceNumber"
size="1" value="${songValuesList[resList_rowNum - 1].sequenceNumber}">
</div>
</display:column>
<display:column title="Song Name" style="width:20%;" headerClass="sortable">
<div>${songValuesList[resList_rowNum - 1].name}</div>
<div style="display:none;">
<input onchange="performChange(this)" type="text" name='songValuesList[${resList_rowNum - 1}].name'
value="${songValuesList[resList_rowNum - 1].name}" maxlength="50"/>
</div>
</display:column>
<display:column title="delete" style="width:20%">
<div><a href="javascript:deleteSong(${songValuesList[resList_rowNum - 1].sequenceNumber});">delete</a></div>
</display:column>
</display:table>
<input type="checkbox" id="Handler" onclick="javascript:invertSelected()"/>Select All
<br/>
<input type="button" value="add new song" onclick="javascript:addRow()"/>
</body>
</html>
其他的代码见附件!代码不免会有一些瑕疵,希望与大家一起探讨!
- 大小: 169.8 KB
分享到:
- 2009-02-11 09:41
- 浏览 1091
- 评论(2)
- 论坛回复 / 浏览 (2 / 4064)
- 查看更多
相关推荐
基于DisplayTag的分页及属性定制
基于DisplayTag的分页方案
DisplayTag是一个开源的自定义标签库(Custom Tag lib),他...或许上面说的有些夸张了,但是DisplayTag在表格的格式化方面表现确实出色,当然,他也只能显示表格,视图层的大部分工作不就是使用表格来格式化数据嘛?!
displaytag 表格 标签 displaytag-1.1.1标签库及其使用方法
displaytag的使用方法(用于数据表格的显示和功能控制)Displaytag1.1版本使用方法
displaytag标签使用详解 应用实例
DisplayTag标签使用说明DisplayTag标签使用说明DisplayTag标签使用说明DisplayTag标签使用说明DisplayTag标签使用说明DisplayTag标签使用说明
displaytag是一个表格标签更有效的开发程序
displaytag所有包(资源) 及使用方法
打算用这个表格插件的 这是一个很好的资源 O ∩ ∩ O ">资源包括3个文件 第一个是oracle版的程序示例 第二个是mysql版的程序示例 第三个是displaytag的应用文件 两个版本的程序都可以运行 并且程序中含有数据库文件 ...
关于displaytag标签的使用 使用方便 做网页的时候用的着
示例如何使用displaytag,详细介绍displaytag在使用方式上的不同,具有举一反三的效果
DisplayTag分页及属性
Displaytag实现分页
displaytag-1.2
displaytag-1.1.jar,显示表格的tag
displaytag1.2.jar 下载
DisplayTag是一个非常好用的表格显示标签,适合MVC模式.
displaytag详细用法(中文问题已解决,附带自己修改的properties文件)还附带了properties专用文件编辑器插件