点击表头实现排序

单击表头单元格实现排序

        在DRP项目中,讲解真是详略得当。对原理性和思想像的内容(比如Servlet、filter过滤器)进行了细致的分析并用RationalRose画程序执行顺序图(流程图)。对于简单的内容则被布置成作业或提出建议,自行完善和完成。本文,将实现其中的一个作业“单击表头单元格,对内容进行排序后重新输出”。

        sql查询语句(以user_id为 标识 排序)为:select user_id,user_name from t_user order by user_id;

业务逻辑代码(MVC中的C层):(在DRP项目中,被嵌入在了jsp页面上,虽然代码写在页面上,但任然是服务端代码)

<%
	int pageNo = 1;
	int pageSize = 10;
	// 声明一个分页实例
	PageModel<User> pageModel = null;
	
	// 排序
	String order = request.getParameter("command");
	 
	// 获取当前页码
	String pageNo_call = request.getParameter("pageNo_Now");
	int pageNo_back = 0 ;
	if(pageNo_call != null) {
		pageNo_back = Integer.parseInt(pageNo_call);
	}
	// 获取排序字段
	String orderField = request.getParameter("orderField");
	/**
	 * 用户列表显示
	 *		* 若是排序操作,按排序后的数据显示
	 *		* 在没有排序操作的前提下,进行无序初始化
	 */
	if("order".equals(order)) {
		// 排序后网页显示
		pageModel = UserManager.getInstance().orderUser(pageNo_back,pageSize,orderField);
	}else{
		// 网页初始化(未排序)
		pageModel = UserManager.getInstance().findUserList(pageNo, pageSize);
	}
 %>


js代码:

	<script type="text/javascript">		
		// 排序
		function order(field) {
			
			// 取得当前页号
			 var pageNo_Now = <%= pageModel.getPageNo()%>;
			// 点击 用户代码
			if(field.id == "user_ID") {
				// 传递 排序的对象
				var orderField = "user_id";
				 window.self.location = "user_maint.jsp?pageNo_Now=" + pageNo_Now + "&orderField=" + orderField + "&command=order";
			}
			
			// 点击 用户名称
			if(field.id == "user_Name") {
				// 传递 排序的对象
				var orderField = "user_name";
				 window.self.location = "user_maint.jsp?pageNo_Now=" + pageNo_Now + "&orderField=" + orderField + "&command=order";
			}
			
			// 点击 联系电话
			if(field.id == "user_ContactTel") {
				// 传递 排序的对象
				var orderField = "contact_tel";
				 window.self.location = "user_maint.jsp?pageNo_Now=" + pageNo_Now + "&orderField=" + orderField + "&command=order";
			}
			
			// 点击 email
			if(field.id == "user_Email") {
				// 传递 排序的对象
				var orderField = "email";
				 window.self.location = "user_maint.jsp?pageNo_Now=" + pageNo_Now + "&orderField=" + orderField + "&command=order";
			}
			
			// 点击 创建时间
			if(field.id == "user_CreateDate") {
				// 传递 排序的对象
				var orderField = "create_date";
				 window.self.location = "user_maint.jsp?pageNo_Now=" + pageNo_Now + "&orderField=" + orderField + "&command=order";
			}
		}

	</script>

jsp中的表格:(MVC中的V层)

        <!--
            为表头thead字段设置id标签和οnclick="order(this)"触发事件
        -->

	<table id="userTable" width="95%" border="1" cellspacing="0" cellpadding="0" align="center" class="table1" >
		<thead>
			<tr>
				<td width="55" class="rd6">
					<input type="checkbox" name="ifAll" onClick="checkAll(this)">
				</td>
				<td width="119" class="rd6" οnclick="order(this)" id="user_ID">
					用户代码
				</td>
				<td width="152" class="rd6" οnclick="order(this)" id="user_Name">
					用户名称
				</td>
				<td width="166" class="rd6" οnclick="order(this)" id="user_ContactTel">
					联系电话
				</td>
				<td width="150" class="rd6" οnclick="order(this)" id="user_Email">
					email
				</td>
				<td width="153" class="rd6" οnclick="order(this)" id="user_CreateDate">
					创建日期
				</td>
			</tr>
		</thead>
		<tbody>
			<%	// 运用Iterator迭代器,遍历集合,填充表格内容
				List<User> userList = pageModel.getList();
				for(Iterator<User> iter = userList.iterator();iter.hasNext();) {
					User user = (User)iter.next();
			%>
			<tr>
				<td class="rd8">
					<input id="<%=user.getUserId()%>" type="checkbox" name="selectFlag" class="checkbox1"
						value="<%= user.getUserId() %>" />
				</td>
				<td class="rd8">
					<%=user.getUserId() %>
				</td>
				<td class="rd8">
					<%=user.getUserName() %>
				</td>
				<td class="rd8">
					<%=user.getContactTel() %>
				</td>
				<td class="rd8">
					<%=user.getEmail() %>
				</td>
				<td class="rd8">
					<%=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateDate()) %>
				</td>
			</tr>
			<%
				}
			%>
		</tbody>
	</table>

数据操作层(MVC中的M层):查询数据并实现排序

	public class UserManager {
	
		private static UserManager instance = new UserManager();
		
		private UserManager() {}
		
		public static UserManager getInstance() {
			return instance;
		}
		
		/**
		 * 【有序】 分页查询 用户信息
		 * 
		 * @param pageNo 当前页码
		 * @param pageSize 每页显示的记录数
		 * @param orderField 排序匹配字段
		 * @return 有序的用户信息
		 */
		public PageModel<User> orderUser(int pageNo,int pageSize,String orderField) {
			String sql = "select user_id, user_name, contact_tel, email, create_date from t_user where user_id <> 'root' order by "+ orderField;
			Connection conn = null;		
			PreparedStatement pstmt = null;
			ResultSet rs = null;
			PageModel<User> pageModel = null;
			try {
				conn = DbUtil.getConnection();
				pstmt = conn.prepareStatement(sql);
				rs = pstmt.executeQuery();
				List<User> userList = new ArrayList<User>();
				while (rs.next()) {
					User user = new User();
					user.setUserId(rs.getString("user_id"));
					user.setUserName(rs.getString("user_name"));
					user.setContactTel(rs.getString("contact_tel"));
					user.setEmail(rs.getString("email"));
					user.setCreateDate(rs.getTimestamp("create_date"));
					userList.add(user);
				};
				pageModel = new PageModel<User>();
				pageModel.setList(userList);
				pageModel.setTotalRecords(getTotalRecords(conn));
				pageModel.setPageNo(pageNo);
				pageModel.setPageSize(pageSize);
	
			} catch (SQLException e) {
				e.printStackTrace();
			}finally {
				DbUtil.close(rs);
				DbUtil.close(pstmt);
				DbUtil.close(conn);
			}
			
			return pageModel;
		}
	}

       通过细节上的完善,增强用户体验度。对用户来说用起来更加便利了,对程序设计者来说,更好地通过职能去实现智能,因为程序本身就是一个找规律的事情。程序设计就是通过总结规律,实现规律的可重复性。找出更多的的规律,在合适的时候执行,在增强用户体验度的同时,增强了职能。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值