这是我去年自己做的一个项目里的代码的一部分,把它提出来整理整理。 效果如下:
主要代码:
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
- 浏览 1125
- 评论(2)
- 论坛回复 / 浏览 (2 / 4108)
- 查看更多
相关推荐
### 基于DisplayTag的分页及属性定制 #### DisplayTag概述 DisplayTag是一个用于JSP页面的强大标签库,其主要功能在于处理表格数据,包括分页、数据导出、列排序等高级特性。DisplayTag是开源软件,可以从官方网站...
通过使用DisplayTag 1.2,开发人员可以更专注于业务逻辑,而不用花费大量时间在表格展示的细节上,从而提高了开发效率和代码的可维护性。同时,由于其强大的功能和良好的社区支持,DisplayTag已经成为许多Java Web...
这个“displaytag简单项目”是一个基于DisplayTag库的示例应用,旨在帮助开发者理解并掌握如何在实际项目中使用DisplayTag。在这个项目中,你可以看到如何配置DisplayTag、如何创建动态表格以及如何自定义各种展示...
DisplayTag的工作原理基于JSP标签库,它可以与任何Java持久层框架(如Hibernate、JPA)或数据访问技术(如JDBC)配合使用。其核心思想是将表格的渲染逻辑从业务逻辑和视图层分离,使开发者可以更专注于数据处理和...
DisplayTag是一个开源的自定义标签库(Custom Tag lib),他...或许上面说的有些夸张了,但是DisplayTag在表格的格式化方面表现确实出色,当然,他也只能显示表格,视图层的大部分工作不就是使用表格来格式化数据嘛?!
7. **可扩展性**:Displaytag的设计允许开发者通过自定义标签和扩展来适应各种需求。 在使用"Displaytag.jar"时,开发者通常会将其复制到项目的`WEB-INF/lib`目录下,这样Web应用服务器在运行时就能找到并加载这个...
displayTag允许你在`<display:column>`中设置属性,如`property`(对应数据模型中的字段)、`headerClass`(定义表头样式)和`sortable`(是否可排序)等。 接下来,我们关注JavaScript的作用。通过在HTML中引入...
总的来说,DisplayTag是一个强大的表格标签库,它简化了Web应用中表格的开发,同时提供了丰富的功能和高度的可定制性。通过解决中文问题并配合合适的编辑器插件,开发者可以更高效地利用DisplayTag构建出满足需求的...
8. **JavaScript与Java的交互**:由于DisplayTag是基于Java的,可能需要理解如何通过JavaScript调用后台Java方法来实现更复杂的业务逻辑。 9. **错误处理**:在实现这些功能时,理解如何处理可能出现的错误和异常,...
Displaytag是一个开源的Java库,专门用于创建复杂的表格和数据展示。在1.1版本中,它主要解决了在处理大数据分页时的问题,这使得它成为处理大量数据的理想选择,尤其是在Web应用程序中。这个源码包包含了一系列的...
3. **可扩展性**:DisplayTag 具有良好的可扩展性,允许开发者通过自定义标签、属性处理器和装饰器来扩展其功能。例如,可以创建新的列类型或调整默认的样式表。 4. **国际化与本地化**:DisplayTag 支持多语言环境...
DisplayTag 是一个强大的开源 JSP 标签库,专门用于处理网页中的表格展示。它提供了丰富的功能,如分页、数据导出、列排序和分组等,极大地简化了网页表格的开发工作。要使用 DisplayTag,首先需要从其官方网站...
DisplayTag 1.1.1是该库的一个版本,它包含了一系列预定义的JSP标签,使得创建复杂的、可分页、可排序、可导出的表格变得简单易行。在本篇中,我们将深入探讨DisplayTag 1.1.1的核心功能和使用方法。 首先,...
它极大地简化了在Web应用中处理表格的任务,提供了丰富的功能和高度可定制性。DisplayTag 1.1是该库的一个版本,其源码对于理解内部工作原理和自定义功能非常有价值。 在DisplayTag中,"src"标签通常指的是表格数据...
DisplayTag 是一个基于 JSP 标签库,它通过提供一系列的自定义标签来简化在 JSP 页面中创建复杂的表格和分页操作。这些标签可以用来展示数据库查询结果,实现动态排序,以及处理分页请求。DisplayTag 支持多种展示...
6. **样式可配置**:通过CSS样式表,开发者可以完全控制表格的外观,包括边框、颜色、字体等。 7. **列隐藏和显示**:用户可以根据需要动态隐藏或显示表格中的列。 8. **扩展性**:DisplayTag 具有良好的扩展性,...
DisplayTag 是一个开源的Java库,专为Web应用程序设计,用于创建复杂的表格和列格式化。这个库极大地简化了在网页上展示数据表的过程,提供了许多高级功能,如分页、排序、国际化、导出等。它基于JSP 2.0标签库,...
DisplayTag 是一个强大的开源标签库,专为 Java Web 开发设计,主要用于在 MVC 模式下展示表格数据。它的特点是功能丰富,易于使用,并且高度可定制化,能够帮助开发者快速构建美观的数据展示页面。DisplayTag 支持...
DisplayTag 是一个开源的Java库,专为Web应用程序设计,用于创建复杂的表格展示。这个"displaytag-1.0-b3.zip"文件包含了DisplayTag库的版本1.0的第三个beta版本。DisplayTag通过简化HTML表格的实现,提供了一种强大...
DisplayTag 是一个非常实用的工具,它简化了数据表格的创建过程,并提供了丰富的自定义选项,使得开发者能够根据实际需求灵活地定制表格样式和功能。通过本文的介绍,相信读者已经掌握了 DisplayTag 的基本使用方法...