package com.doit8.tag;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import com.doit8.tag.util.IQuery;
public class TableTag extends SimpleTagSupport{
private String name=""; //控件名
private String width=""; //宽度
private String action=""; //动作处理页面
private boolean showStatusBar=false; //是否显示状态栏
private boolean showTitle=false; //是否显示表头
private List items; //数据项
private int rowId=0; //记录ID
private int pageRowCount=10; //每页显示的记录数
private IQuery query; //查询接口
private String sql=""; //查询语句
private boolean isCustomTitle=false; //是否自定义表头
public void doTag() throws JspException, IOException
{
PageContext pageContext=(PageContext)this.getJspContext();
ServletRequest request=pageContext.getRequest();
JspWriter out=getJspContext().getOut();
JspFragment body=getJspBody();
/*如果有查询语句则执行查询语句自动实现后台翻页如果没有查询语句有数据项则用数据项填充数据表*/
if(!"".equals(sql))
{
int pageCount=0; //页数
int page=0; //当前页
String sortby=""; //排序条件
String isOrderStr="true";
if(request.getParameter(name+"_page")!=null)
{
page=Integer.parseInt(request.getParameter(name+"_page").toString());
}
if(request.getParameter(name+"_sortby")!=null)
{
sortby=request.getParameter(name+"_sortby").toString();
boolean isOrder=true;
if(request.getParameter(name+"_order").toString().equals("true"))
{
isOrder=true;
isOrderStr="true";
}
else
{
isOrder=false;
isOrderStr="false";
}
if(!"".equals(sortby))
{
//判断是否有ORDER BY子句
if(sql.toUpperCase().indexOf("ORDER")>0&&sql.toUpperCase().indexOf("BY")>0)
{
if(isOrder)
{
sql+=","+sortby;
}
else
{
sql+=","+sortby+" DESC";
}
}
else
{
if(isOrder)
{
sql+=" ORDER BY "+sortby;
}
else
{
sql+=" ORDER BY "+sortby +" DESC";
}
}
}
}
/*根据查询语句取后台翻页的数据项*/
items=query.getListByPage(sql, page, pageRowCount);
/* int rowCount=query.getRowCount(); //取总记录数
if(rowCount%pageRowCount==0)
{
pageCount=rowCount/pageRowCount-1;
}
else
{
pageCount=rowCount/pageRowCount;
}
int showPage=page+1;*/
/*组织数据表HTML输出*/
out.println("<form name=\""+name+"_table_Form\" action=\""+action+"\" method=\"POST\">");
out.println("<div>");
out.println("<table name=\""+name+"\" width=\""+width+"\" border=1 class=\"Content\">");
body.invoke(null);
out.println("</table>");
out.println("</div>");
if(showStatusBar)
{
int rowCount=query.getRowCount(); //取总记录数
if(rowCount%pageRowCount==0)
{
pageCount=rowCount/pageRowCount-1;
}
else
{
pageCount=rowCount/pageRowCount;
}
int totalPageCount=pageCount+1;
int showPageCount=10; //显示页数
int splitPageCount=showPageCount/2; //分割页
int showPagei=0;
if(pageCount<=showPageCount)
{
showPageCount=pageCount+1;
}
int showPage=page+1;
int nextPage=page+1>pageCount?pageCount:page+1;
int lastPage=pageCount;
int previewPage=page-1<0?0:page-1;
out.println("<table width=\"100%\">");
out.println("<tr><td align=\"right\"> ");
out.println(showPage+"/"+totalPageCount);
out.println("<input type=\"hidden\" id=\""+name+"_page\" name=\""+name+"_page\" value="+page+">");
out.println("<input type=\"hidden\" id=\""+name+"_sortby\" name=\""+name+"_sortby\" value="+sortby+">");
out.println("<input type=\"hidden\" id=\""+name+"_order\" name=\""+name+"_order\" value="+isOrderStr+">");
out.println("<a href=javascript:"+name+"_gotopage(0);>");
out.println("<font title=\"first page\" face=webdings color=#888888>9</font></a>");
out.println("<a href=javascript:"+name+"_gotopage("+previewPage+");>");
out.println("<font title=\"preview page\" face=webdings color=#888888>7</font>");
out.println("</a>");
//计算页数
for(int i=1;i<=showPageCount;i++)
{
if(pageCount<=showPageCount||page<splitPageCount)
{
showPagei=i;
}
else
{
if(page<=pageCount-showPageCount)
{
showPagei=i+page-splitPageCount;
}
else
{
showPagei=i+(pageCount-showPageCount+1);
}
}
if(showPage==showPagei)
{
out.println("<font color=red>"+showPagei+"</font>");
}
else
{
int goPage=showPagei-1;
out.println("<a href=javascript:"+name+"_gotopage("+goPage+")>"+showPagei+"</a>");
}
}
out.println("<a href=javascript:"+name+"_gotopage("+nextPage+")>");
out.println("<font title=\"next page\" color=#888888 face=webdings>8</font>");
out.println("</a>");
out.println("<a href=javascript:"+name+"_gotopage("+lastPage+")>");
out.println("<font title=\"last page\" color=#888888 face=webdings>:</font>");
out.println("</a>");
out.println("</td></tr>");
out.println("</table>");
}
out.println(createGoPageScript());
out.println(createSortScript());
out.println("</form>");
}
else
{
out.println("<table name=\""+name+"\" width=\""+width+"\" border=1 class=\"Content\">");
body.invoke(null);
out.println("</table>");
}
}
/**
* 创建翻页js脚本
* @return
*/
private String createGoPageScript()
{
StringBuffer strScript=new StringBuffer();
strScript.append("<script>");
strScript.append("function "+name+"_gotopage(page)");
strScript.append("{");
strScript.append("document.getElementById(\""+name+"_page\").value=page;");
strScript.append("document."+name+"_table_Form.submit();");
strScript.append("}");
strScript.append("</script>");
return strScript.toString();
}
/**
* 创建排序js脚本
* @return
*/
private String createSortScript()
{
StringBuffer strScript=new StringBuffer();
strScript.append("<script>");
strScript.append("function "+name+"_sort(sortCodition)");
strScript.append("{");
strScript.append("if(document.getElementById(\""+name+"_order\").value=='true')");
strScript.append("{document.getElementById(\""+name+"_order\").value='false'}");
strScript.append("else");
strScript.append("{document.getElementById(\""+name+"_order\").value='true'}");
strScript.append("document.getElementById(\""+name+"_sortby\").value=sortCodition;");
strScript.append("document."+name+"_table_Form.submit();");
strScript.append("}");
strScript.append("</script>");
return strScript.toString();
}
public void setItems(List items) {
this.items = items;
}
public void setName(String name) {
this.name = name;
}
public void setWidth(String width) {
this.width = width;
}
public void setShowStatusBar(boolean showStatusBar) {
this.showStatusBar = showStatusBar;
}
public void setPageRowCount(int pageRowCount) {
this.pageRowCount = pageRowCount;
}
public void setQuery(IQuery query) {
this.query = query;
}
public void setSql(String sql) {
this.sql = sql;
}
public void setAction(String action) {
this.action = action;
}
public void setShowTitle(boolean showTitle) {
this.showTitle = showTitle;
}
没有合适的资源?快使用搜索试试~ 我知道了~
自定义table标签和数据展现控件(源码)

共60个文件
class:21个
java:21个
jar:7个


温馨提示
特点<br>在上个table标签的基础上修改了部分代码,支持firefox.<br>新增数据展现控件以便定制更加复杂的table.<br>1、JSP2.0标准自定义标签<br>2、支持数据库后台翻页<br>3、支持排序<br>4、支持firfox<br>4、使用简单、灵活<br>示例<br>http://www.lifespanaustralia.com/doit8taglib/index.jsp
资源推荐
资源详情
资源评论




























收起资源包目录




















































































共 60 条
- 1

xiejava1018
- 粉丝: 4w+
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 工程项目管理方法的核心方法.docx
- 计算机网络技术与应用试题库.doc
- 计算机三级(网络技术)笔试275.pdf
- 电子商务产业园项目可行性研究报告.doc
- 基于YOLOv8深度学习的磁瓦表面缺陷自动化检测:实验结果与效率分析 · YOLOv8 v2.1
- 计算机网络专业学生实习报告范文.doc
- 情侣装网络营销策划方案样本.doc
- 医药电商市场现状和发展态势互联网事业部培训.ppt
- 基于HTML5的响应式网站的设计与实现论文正文.docx
- 会展策划第七章第一节会展项目管理的基本理论ppt课件.ppt
- 系统集成项目管理工程师复习小结.doc
- 内河水运建设项目管理指标体系及信息系统开发设想.doc
- 因特网信息交流与网络安全教学设计(整理).pdf
- 虚拟化项目验收报告模板.docx
- 最新国家开放大学电大《优秀广告作品评析(专)》网络核心课形考网考作业及答案.pdf
- 综合布线设计的若干要点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
前往页