點擊表頭實現排序

來源:互聯網
上載者:User

單擊表頭儲存格實現排序

        在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";}// 點擊 emailif(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標籤和onclick="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" onclick="order(this)" id="user_ID">使用者代碼</td><td width="152" class="rd6" onclick="order(this)" id="user_Name">使用者名稱稱</td><td width="166" class="rd6" onclick="order(this)" id="user_ContactTel">聯絡電話</td><td width="150" class="rd6" onclick="order(this)" id="user_Email">email</td><td width="153" class="rd6" onclick="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;}}

       通過細節上的完善,增強使用者體驗度。對使用者來說用起來更加便利了,對程式設計者來說,更好地通過職能去實現智能,因為程式本身就是一個找規律的事情。程式設計就是通過總結規律,實現規律的可重複性。找出更多的的規律,在合適的時候執行,在增強使用者體驗度的同時,增強了職能。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.