posts - 10, comments - 9, trackbacks - 0, articles - 17

          1.。JSP頁(yè)面中:

          ////////////數(shù)據(jù)顯示///////////////////////
          顯示 從數(shù)據(jù)庫(kù)查出的,放在 list<offer> 中的數(shù)據(jù)。

          <c:forEach items="${requestScope.list}" var="offer">
              
          <tr>
                
          <td height="25">${offer.offername}</td>
                
          <td height="25">${offer.offeradd}</td>
                
          <td height="25">${offer.tel}</td>
                
          <td height="25">${offer.connecter}</td>
                
          <td height="25">${offer.bank}</td>
                
          <td height="25">${offer.account}</td>
                
          <td height="25">${offer.post}</td>
                
          <td height="25" onclick="showComment(${offer.offerId})"><p id="getshow${offer.offerId}"> 查看備注 </p><p id=${offer.offerId} style="display:none">${offer.comment}</p></td>
                
          <td height="25"><a href="">修改</a></td>
                
          <td height="25"><a onclick="deleteCheck('${offer.offername}')">刪除</a></td>
                 
          </tr></c:forEach>
                
          <script>
                  function showComment(sid)
          {
                               
          if(document.getElementById(sid).style.display=="none"){
                                       document.getElementById(sid).style.display
          ="inline";
                                       document.getElementById(
          "getshow"+sid).style.display="none";}
           
                               
          else {
                                       document.getElementById(sid).style.display
          ="none";
                                       document.getElementById(
          "getshow"+sid).style.display="inline";}


                      }


                    function deleteCheck(offername)
          {
                                   var name
          =offername;
                             
          if(confirm("確認(rèn)刪除供應(yīng)商 :"+name+" ?"))
                                      window.location
          ="<%=path%>/service/message.jsp?message=needtochange";
                                     
          return;
                    }
          </script>

          ////////
          ///////////分頁(yè)選擇單    //////////////////////
          參數(shù)說(shuō)明    每次顯示 5個(gè)頁(yè)面連接,按 '<'  '>'  則顯示上/下5個(gè)頁(yè)面:
           pagePart 以5頁(yè)面為以part。從1開(kāi)始
           currPage 當(dāng)前頁(yè)數(shù)
          pageCount 總頁(yè)數(shù)

           1<div class=digg align="right">
           2     <c:choose>
           3              <c:when test="${requestScope.pagePart>1}">
           4                      <a href="<%=path%>/offerSearch.do?offername=${requestScope.offername}&page=${requestScope.pagePart*5-5}">&lt; </a>&nbsp;&nbsp;  
           5              </c:when>
           6               <c:otherwise>
           7                           <span class=disabled>&lt;</span>
           8               </c:otherwise>
           9          </c:choose>
          10
          11  <c:forEach begin="${(requestScope.pagePart*5-4)>0?requestScope.pagePart*5-4:1}" end="${requestScope.pagePart*5<requestScope.pageCount?requestScope.pagePart*5:requestScope.pageCount}" var="page">
          12        <c:choose>
          13             <c:when test="${requestScope.currPage==page}"><span class=current>${page}</span></c:when>
          14            <c:otherwise><a href="<%=path%>/offerSearch.do?offername=${requestScope.offername}&page=${page}">${page}</a></c:otherwise>
          15        </c:choose>
          16  </c:forEach>
          17  
          18  <c:choose>
          19          <c:when  test="${requestScope.pagePart*5<requestScope.pageCount}">
          20 &nbsp;&nbsp;<a href="<%=path%>/offerSearch.do?offername=${requestScope.offername}&page=${requestScope.pagePart*5+1}"">&gt; </a>
          21          </c:when>
          22          <c:otherwise><span class=disabled>&gt;</span></c:otherwise>
          23  </c:choose><span class=disabled>${requestScope.currPage}/${requestScope.pageCount}</span>
          24</div>
          25
          26
          分頁(yè)處用到的CSS
          DIV.digg {
           PADDING-RIGHT
          : 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; MARGIN: 3px; PADDING-TOP: 3px; TEXT-ALIGN: center
          }

          DIV.digg A 
          {
           BORDER-RIGHT
          : #aaaadd 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #aaaadd 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #aaaadd 1px solid; COLOR: #000099; PADDING-TOP: 2px; BORDER-BOTTOM: #aaaadd 1px solid; TEXT-DECORATION: none
          }

          DIV.digg A:hover 
          {
           BORDER-RIGHT
          : #000099 1px solid; BORDER-TOP: #000099 1px solid; BORDER-LEFT: #000099 1px solid; COLOR: #000; BORDER-BOTTOM: #000099 1px solid
          }

          DIV.digg A:active 
          {
           BORDER-RIGHT
          : #000099 1px solid; BORDER-TOP: #000099 1px solid; BORDER-LEFT: #000099 1px solid; COLOR: #000; BORDER-BOTTOM: #000099 1px solid
          }

          DIV.digg SPAN.current 
          {
           BORDER-RIGHT
          : #000099 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #000099 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #000099 1px solid; COLOR: #fff; PADDING-TOP: 2px; BORDER-BOTTOM: #000099 1px solid; BACKGROUND-COLOR: #000099
          }

          DIV.digg SPAN.disabled 
          {
           BORDER-RIGHT
          : #eee 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #eee 1px solid; PADDING-LEFT: 5px; PADDING-BOTTOM: 2px; MARGIN: 2px; BORDER-LEFT: #eee 1px solid; COLOR: #ddd; PADDING-TOP: 2px; BORDER-BOTTOM: #eee 1px solid
          }


          2 處理的Action
          public ActionForward execute(ActionMapping mapping, ActionForm form,
                      HttpServletRequest request, HttpServletResponse response) throws Exception 
          {
                  String offername = Model.changeStr(request.getParameter("offername"));
                  request.setAttribute("offername", offername);
                  request.setAttribute("pageCount", OfferSearchModel.getPageCount(offername));
                  
                  if(request.getParameter("page")==null){
                      request.setAttribute("list", OfferSearchModel.getOfferList(offername, 1));        
                      request.setAttribute("pagePart", 1);
                      request.setAttribute("currPage", 1);
                  
          }

                  else
          {
                      int page = Integer.parseInt(request.getParameter("page"));
                      int pagePart = (page-1)/5+1;
                      request.setAttribute("list", OfferSearchModel.getOfferList(offername, page));
                      request.setAttribute("pagePart", pagePart);
                      request.setAttribute("currPage", page);
                  
          }
                  
                  return mapping.findForward("show");
              }

          3 數(shù)據(jù)庫(kù)查詢 (pageSize 每頁(yè)顯示條數(shù))
          String sql="select count(*) from offer where offername like '%"+offername+"%'";

          sql = sql+"where offername like '%"+offername+"%' and rownum <="+pageSize
              +"and offerid not in (select offerid from offer where offername like '%"+offername
              +"%' and rownum <="+pageSize*(page-1)+")";            



          后記:第三步的SQL語(yǔ)句 本來(lái)是根據(jù)top-N的方法得來(lái)的,但是在Oracle中使用后發(fā)現(xiàn)個(gè)錯(cuò)誤:
          比如取第5頁(yè)數(shù)據(jù):
          select * from offer where offername like 'offername' and rownum <=10
              
          and offerid not in (select offerid from offer where offername like 'offername' and rownum <=10*(5-1));     
          錯(cuò)誤原因是 ()中的子查詢 和外面的查詢的排序方式不同!!非常詭異的問(wèn)題,折騰一下午也沒(méi)解決。
          現(xiàn)在實(shí)際用的是全取出后,再截取需要數(shù)據(jù)。雖然這個(gè)方法不好,但是可以方便做成公共的接口和實(shí)現(xiàn)。

          這個(gè)方法的Oracle替換方法 可以考慮用過(guò)程函數(shù)的游標(biāo)實(shí)現(xiàn)。還有用集合運(yùn)算中的MINUS相減,算法應(yīng)該和上面的是一樣的。


          Feedback

          # re: 在MVC中實(shí)現(xiàn)的分頁(yè)。  回復(fù)  更多評(píng)論   

          2013-11-25 11:49 by 扯淡
          4223
          主站蜘蛛池模板: 开鲁县| 滨州市| 虹口区| 平昌县| 银川市| 武义县| 陵川县| 横峰县| 临城县| 汝南县| 子长县| 和田市| 和平区| 新乐市| 睢宁县| 呼和浩特市| 容城县| 和政县| 南宁市| 横峰县| 包头市| 宁强县| 宜春市| 延边| 惠州市| 新丰县| 顺平县| 遂平县| 宁河县| 南澳县| 库车县| 大同市| 洛宁县| 酉阳| 霸州市| 安徽省| 三亚市| 维西| 双江| 台南县| 静宁县|