lecture Home > ASP.NET > CassattÀÇ VS.NET °Ô½ÃÆÇ

CassattÀÇ VS.NET °Ô½ÃÆÇ ¸¸µé±â

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2002³â 09¿ù 22ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2002³â 10¿ù 21ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : Cassatt(±è ¿¬Áø)
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : 7. ÆäÀÌÁö ¸µÅ© ±¸ÇöÇϱâ - PageNavigator.ascx

7. ÆäÀÌÁö ¸µÅ© ±¸ÇöÇϱâ - PageNavigator.ascx


»ç¿ëÀÚ ÄÁÆ®·Ñ »ç¿ëÇϱâ

±Û ¸ñ·Ï ºÎºÐ¿¡, ÀÏ´ÜÀº °£´ÜÇÏ°Ô ÀÌÀü/´ÙÀ½ ÆäÀÌÁö·Î À̵¿Çϵµ·Ï¸¸ Çß¾ú½À´Ï´Ù. ±×·±µ¥ °Ô½ÃÆÇ¿¡¼± ÀϹÝÀûÀ¸·Î, ÆäÀÌÁö¹øÈ£·Î Á÷Á¢ À̵¿Çϵµ·Ï ÇÏ´Â ¸µÅ©µµ Á¦°øÇÕ´Ï´Ù.

±×¸²Àº ¸ñ·Ï ÆäÀÌÁö(List.aspx)¿¡, À̹ø °­Á¿¡¼­ ±¸ÇöÇÒ ÆäÀÌÁö ¸µÅ©¸¦ Ãß°¡ÇÑ ¸ð½ÀÀÔ´Ï´Ù. È­»ìÇ¥ ºÎºÐÀÔ´Ï´Ù.
±×¸² ó·³, °Ô½ÃÆÇ¿¡¼± ÀϹÝÀûÀ¸·Î ÀÌÀüÆäÀÌÁö/´ÙÀ½ÆäÀÌÁö °¡´Â ¹öư°ú ÇÔ²² ÇØ´ç ÆäÀÌÁö ºÎ±Ù ÆäÀÌÁö(?) ·Î Á÷Á¢ °¡µµ·Ï ÇÏ´Â ÆäÀÌÁö ¸µÅ©µµ Á¦°øÇÕ´Ï´Ù. À̹ø °­Á¿¡¼­ ±× ÆäÀÌÁö ¸µÅ©¸¦ ±¸ÇöÇÏ·Á ÇÕ´Ï´Ù. ±×¸²¿¡¼­ º¸µí, ùÆäÀÌÁö·Î À̵¿ÇÏ´Â ¸µÅ©( [<<] ), ÀÌÀüÆäÀÌÁö ( [<] ), °¢ ÆäÀÌÁö·Î À̵¿ÇÏ´Â ¸µÅ©( [1][2][3][4]... ), ´ÙÀ½ÆäÀÌÁö ( [>] ), ³¡ÆäÀÌÁö( [>>] ) µîÀÇ ¸µÅ©·Î ±¸¼ºµÇ¾îÀÖ½À´Ï´Ù.

±×·±µ¥ ÀÌ·¯ÇÑ ÆäÀÌÁö¸µÅ©´Â °Ô½ÃÆÇ¿¡¼­µµ ¾²ÀÌÁö¸¸, ¹æ¸í·Ï, ÀÚ·á½Çµî ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­µµ ¾²ÀÌ°Ô µË´Ï´Ù. ±×¸®°í ¿©·¯ °Ô½ÃÆÇÀ» °¢°¢ ´Ù¸¥ ¼Ò½º·Î ÀÛµ¿½ÃÄѵµ ±×·¸°í¿ä. °ÅÀÇ ºñ½ÁÇÑ ·ÎÁ÷ÀÏ ÅÙµ¥, °¢ ¾îÇø®ÄÉÀÌ¼Ç º°·Î ÀÛ¼ºÇÏ°Ô µÈ´Ù¸é ³¶ºñÀÏµí ½Í½À´Ï´Ù.

±×·¡¼­, ±× ÆäÀÌÁö ¸µÅ© ºÎºÐÀ» »ç¿ëÀÚ ÄÁÆ®·ÑÀ̶õ °ÍÀ¸·Î Á¤ÀÇÇØ¼­, ÀÌ °Ô½ÃÆÇ »Ó ¾Æ´Ï¶ó ´Ù¸¥ ¾îÇø®ÄÉÀ̼ǿ¡¼­µµ Àç »ç¿ë ÇÒ ¼ö ÀÖµµ·Ï ÇÏ·Á ÇÕ´Ï´Ù. ¼Ò½º ÀÚüº¸´Ù´Â ¿©·¯ app ¿¡¼­ ¾²Àϼö ÀÖ´Â ºÎºÐÀ» »ç¿ëÀÚ ÄÁÆ®·Ñ·Î Á¤ÀÇÇÏ°í »ç¿ëÇÏÀÚ´Â °ÍÀÌ À̹ø °­ÁÂÀÇ ÁÖÁ¦¶ö ¼ö ÀÖ½À´Ï´Ù.


ÆäÀÌÁö Ãß°¡

¼Ö·ç¼Ç Ž»ö±â¿¡¼­, ÇØ´ç ÇÁ·ÎÁ§Æ®¸¦ ¿À¸¥ÂÊ Å¬¸¯, ¸Þ´º¿¡¼­ Ãß°¡ -> »õ Æú´õ¸¦ ¼±ÅÃÇØ¼­ Æú´õ¸¦ ¸¸µì´Ï´Ù. Æú´õÀÇ À̸§Àº UserControl ·Î ÁÝ´Ï´Ù. ±×¸®°í ±× Æú´õ¿¡¼­ ¿À¸¥ÂÊŬ¸¯, Ãß°¡-> À¥ »ç¿ëÀÚ Á¤ÀÇ ÄÁÆ®·Ñ Ãß°¡ ¸¦ ¼±ÅÃÇϰí À̸§¶õ¿¡ PageNavigator.ascx ¶ó°í ÀÔ·ÂÇØ¼­ Ãß°¡ÇÕ´Ï´Ù.

À¥ Æû ÆäÀÌÁö Ãß°¡ÇßÀ»¶§ ó·³ ºó ÆäÀÌÁö°¡ º¸Àϰ̴ϴÙ. ±× »óÅ¿¡¼­ HTML ¸ðµå·Î ÀüȯÇϰí, ÇÑÁÙ¸¸ ÀÔ·ÂÇÕ´Ï´Ù. ´ÙÀ½ ÆÄ¶õ»ö ºÎºÐÀÔ´Ï´Ù.

<%@ Control Language="c#" ...(»ý·«) ... %>

<%# PageLink %>
PageLink ¶ó´Â ¼Ó¼º¸¸ ¹ÙÀεùÇϵµ·Ï ÇØ³õ¾Ò½À´Ï´Ù. ³ª¸ÓÁö´Â Ŭ·¡½º·Î Á¤ÀÇÇØ¼­, ¸î°¡Áö ¼Ó¼º°ªÀ» ¼³Á¤ÇÏ¸é ¾Ë¾Æ¼­ [<<][<][1][2][3][>][>>] ÇüÅÂÀÇ ÆäÀÌÁö ¸µÅ©¸¦ Ãâ·ÂÇϵµ·Ï ÇÒ »ý°¢ÀÔ´Ï´Ù.


¼Ò½º ÀÔ·Â

ÀÌÁ¦, ¼Ò½º¸¦ ÀÔ·ÂÇÕ´Ï´Ù. ¼Ò½ºº¸±â·Î Àüȯ( F7 ) ÇØ¼­, ´ÙÀ½Ã³·³ ¼Ò½º¸¦ ÀÔ·ÂÇÕ´Ï´Ù. Page_Load À̺¥Æ®µî¿¡ Äڵ带 Ãß°¡ÇÒ ÇÊ¿ä´Â ¾ø°í¿ä, ¿©·¯ ¼Ó¼ºµé, ¸Þ¼­µåµéÀ» Ãß°¡ÇÕ´Ï´Ù. ÆÄ¶õ»ö ºÎºÐÀÔ´Ï´Ù.

...(»ý·«)...

public class PageNavigator : System.Web.UI.UserControl
{

  public int PageCount=1;
  public int CurrentPage=1;

  public string txtStart = "[<<]";
  public string txtPrev = "[<]";
  public string txtNext = "[>]";
  public string txtEnd = "[>>]";

  public string Action = "notsetted.aspx?p={0}";

  private string makeLink(string linkStr, int page, string title)
  {
    return String.Format( "<a href=\"{0}\" title=\"{1}\">{2}</a>" 
      , String.Format( Action, page )
      , title
      , linkStr );
  }

  protected string PageLink 
  {
    get 
    {
      int pageStart;
      int pageEnd;
      string str = "";

      pageStart=CurrentPage-4;
      if(pageStart<1) 
        pageStart=1;
      pageEnd=pageStart+8;
      if(pageEnd>=PageCount)
        pageEnd=PageCount;
      pageStart=pageEnd-8;
      if(pageStart<1) 
        pageStart=1;
    
      if(CurrentPage>1) 
      {
        str=makeLink(txtStart,1,"ù ÆäÀÌÁö") 
            + " "+ makeLink(txtPrev,CurrentPage-1,"ÀÌÀü ÆäÀÌÁö");
      }
      else 
      {
        str=txtStart +" "+ txtPrev;
      }
      str+=" ";

      for( int i=pageStart;i<=pageEnd;i++) 
      {
        if( i==CurrentPage )
          str+="<b>["+i+"]</b> ";
        else
          str+=makeLink( "["+i+"]",i,i+" ÆäÀÌÁö" )+" ";
      }

      if(CurrentPage<PageCount) 
      {
        str += makeLink(txtNext,CurrentPage+1,"´ÙÀ½ ÆäÀÌÁö") 
               + " "+ makeLink(txtEnd,PageCount,"³¡ ÆäÀÌÁö");
      }
      else 
      {
        str+=txtNext +" "+ txtEnd;
      }
      return str;
    }
  }
  ...(»ý·«)...
}

...(»ý·«)...


List.aspx ¿¡ »ç¿ëÀÚ ÄÁÆ®·Ñ Ãß°¡/Å×½ºÆ®

ÀÌÁ¦ ¹æ±Ý Á¤ÀÇÇÑ ÄÁÆ®·ÑÀ» List.aspx ¿¡ ³ÖÀ» Â÷·ÊÀÔ´Ï´Ù. List.aspx ¸¦ ¿­¾î¼­, [ÀÌÀüÆäÀÌÁö] [´ÙÀ½ÆäÀÌÁö]¶ó°í Ç¥½ÃµÇ¾ú´ø, id °¡ lnkPrevBtn, lnkNextBtn À̾ú´ø HyperLink µÎ°³¸¦ »èÁ¦ÇÕ´Ï´Ù. »èÁ¦ÇÑ ÈÄ, ¼Ö·ç¼Ç Ž»ö±â¿¡¼­ PageNavigator.ascx ¸¦ µå·¡±×-µå·Ó ÇØ¼­ ±× À§Ä¡¿¡ ÄÁÆ®·ÑÀ» Ãß°¡ÇÕ´Ï´Ù. ±×·¯¸é UserControl - PageNavigator1 À̶õ ÄÁÆ®·ÑÀÌ Ãß°¡µÉÅÙµ¥¿ä, ±× ÄÁÆ® ¼Ó¼º¶õÀÇ (id)¸¦ myPageNavigator¶ó°í ¹Ù²ß´Ï´Ù.

Á÷Á¢ Ãß°¡ÇϽ÷Á¸é, HTML º¸±â ¸ðµå¿¡¼­, ÆäÀÌÁö ¸Ç ùÁÙ°ú, Áß°£ÀÇ ÇØ´ç À§Ä¡¿¡ ´ÙÀ½ ÆÄ¶õ»ö ºÎºÐÀ» ³ÖÀ¸½Ã¸é µË´Ï´Ù.

<%@ Register TagPrefix="Me" TagName="PageNavigator" 
             Src="UserControl/PageNavigator.ascx" %>
<%@ Page language="c#" ...(»ý·«)... %>
...(»ý·«)...
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="600" border="1">
  <TR>
    <TD><Me:PageNaviagator id="myPageNavigator" runat="server" /></TD>
    <TD align="right">...(»ý·«)...</TD>
  </TR>
</TABLE>
...(»ý·«)...
»ç¿ëÀÚ ÄÁÆ®·ÑÀº, ¼Ò½ºµµ aspx ÆäÀÌÁö¿Í °ÅÀÇ °°°í, ¸¸µç ÈÄ¿£ À§¿¡ ¼³¸íÇÑ °Íó·³ ¸¶¿ì½º·Î µå·¡±×-µå·Ó Çϰųª, <%@ Register... %> Áö½ÃÀÚ¸¦ ¾²°í ¿øÇÏ´Â °÷¿¡ ű׸¦ ³ÖÀ¸¸é µÇ±â ¶§¹®¿¡ »ç¿ëÇÏ±â  ½±½À´Ï´Ù.

ÀÌÁ¦ ÄÚµå º¸±â·Î ÀüÈ¯ÇØ¼­(List.aspx.cs) ¹æ±Ý Ãß°¡ÇÑ ÄÁÆ®·Ñ( myPageNavigator )¸¦ List Ŭ·¡½º¿¡ Ãß°¡ÇÕ´Ï´Ù. ´Ù¸¥ ÄÁÆ®·ÑÀº VS.NETÀÌ ¾Ë¾Æ¼­ Ãß°¡ÇØ ÁÖÁö¸¸, »ç¿ëÀÚ ÄÁÆ®·ÑÀº »ç¿ëÀÚ°¡ Á÷Á¢ Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ÆÄ¶õ »ö ºÎºÐÀÔ´Ï´Ù.

public class List : System.Web.UI.Page
{
  protected System.Web.UI.WebControls.HyperLink lnkWrite;
  protected System.Web.UI.WebControls.Label lblRecordCount;
  ...(»ý·«)...
  protected MessageBoard.UserControl.PageNavigator myPageNavigator;

  protected string BindWriter( Object item )
  {
  ...(»ý·«)...
Page_Load À̺¥Æ®ÀÇ ¸¶Áö¸· ºÎºÐ, ÀÌÀü ´ÙÀ½ÆäÀÌÁö ºÎºÐÀ» Áö¿ì°Å³ª ¸®¸¶Å©Ã³¸®Çϰí, ¹æ±Ý Ãß°¡ÇÑ »ç¿ëÀÚ ÄÁÆ®·ÑÀ» »ç¿ëÇϵµ·Ï °íĨ´Ï´Ù. ´ÙÀ½ ¼Ò½ºÀÇ ÆÄ¶õ»ö ºÎºÐÀÔ´Ï´Ù.
private void Page_Load(object sender, System.EventArgs e)
{
  ...(»ý·«)...

  // ´ÙÀ½ ºÎºÐÀ» ¸®¸¶Å© ÇÕ´Ï´Ù
  /* 
  // ÀÌÀü ÆäÀÌÁö, ´ÙÀ½ÆäÀÌÁö¸¦ ¼³Á¤ÇÕ´Ï´Ù.
  lnkPrevBtn.NavigateUrl="List.aspx?p="+(page-1);
  lnkNextBtn.NavigateUrl="List.aspx?p="+(page+1);

  if(page<=1)
    lnkPrevBtn.Visible=false;
  if(page>=pageCount)
    lnkNextBtn.Visible=false;
  */

  // ´ÙÀ½ ³×ÁÙÀ» Ãß°¡ÇÕ´Ï´Ù.

  myPageNavigator.PageCount = pageCount;
  myPageNavigator.CurrentPage = page;
  myPageNavigator.Action = "list.aspx?p={0}";
  myPageNavigator.DataBind();
  
}
¼Ò½º¿¡¼± PageNavigator ÀνºÅϽº¿¡ ÆäÀÌÁö °¹¼ö(PageCount), ÇöÀç ÆäÀÌÁö(CurrentPage), ¸µÅ©(Action) ¸¦ ¼³Á¤Çϰí DataBind() ¸¦ È£ÃâÇϰí ÀÖ½À´Ï´Ù. ¹æ¸í·Ï °°Àº ´Ù¸¥ AppÀÇ °æ¿ì¿¡µµ °°Àº ¹æ½ÄÀ¸·Î Ãß°¡Çؼ­ »ç¿ëÇÏ¸é µÉ°Ì´Ï´Ù.

¸¸¾à [<<][<][>][>>] ¹öưÀÇ ¸ð¾çÀ» ¹Ù²Ù°í ½Í´Ù¸é, PageNavigator ű׸¦ ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î ¼³Á¤ÇÏ½Ã¸é µÉ°Ì´Ï´Ù.

<Me:PageNaviagator id="myPageNavigator" runat="server" 
  txtStart="<img src='b_start.gif' border=0 align=absmiddle>"
  txtEnd="<img src='b_end.gif' border=0 align=absmiddle>"
  txtPrev="<img src='b_prev.gif' border=0 align=absmiddle>"
  txtNext="<img src='b_next.gif' border=0 align=absmiddle>"
/>
txtStart, txtEnd, txtPrev, txtNext µîÀÇ ¾îÆ®¸®ºäÆ®¿¡ ¿øÇÏ´Â ³»¿ëÀ» ³ÖÀ¸½Ã¸é µË´Ï´Ù. À̹ÌÁö¶ó¸é <img> ű׸¦ ³ÖÀ¸½Ã¸é µÇ°ÚÁÒ.

 

Back