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

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

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

   °­Á ÀÐÀ½ ¼ö : ȸ

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

   °­Á Á¦¸ñ : 3. ±Û¸ñ·Ï - List.aspx

3. ±Û¸ñ·Ï - List.aspx


ÆäÀÌÁö Ãß°¡/ÄÁÆ®·Ñ ¼³Á¤

À̹ø °­Á¿¡¼± Áö³­ °­Á¿¡¼­ ÀÛ¼ºÇß´ø ±Û ¾²±â ÆäÀÌÁö¿¡¼­ µî·ÏÇÑ ±ÛÀ» ¸ñ·ÏÀ¸·Î º¸¿©ÁÙ, ±Û ¸ñ·Ï ÆäÀÌÁö¸¦ ¸¸µé¾îº¸°Ú½À´Ï´Ù. ÆäÀÌÁö À̸§Àº List.aspx ÀÔ´Ï´Ù.

¼Ö·ç¼Ç Ž»ö±â, ÇØ´ç ÇÁ·ÎÁ§Æ®°¡ ¼±ÅÃµÈ »óÅ¿¡¼­ ÆÄÀÏ ¸Þ´º¿¡¼­ '»õ Ç׸ñ Ãß°¡'¸¦ ¼±ÅÃÇÕ´Ï´Ù. ȤÀº ÇØ´ç ÇÁ·ÎÁ§Æ®¸¦ ¿À¸¥ÂÊ Å¬¸¯ÇϽŠÈÄ Ãß°¡->»õÇ׸ñ Ãß°¡ ¸¦ ¼±ÅÃÇϼŵµ µË´Ï´Ù. ±×·³ '»õ Ç׸ñ Ãß°¡' âÀÌ ¶ß´Âµ¥¿ä, °Å±â¼­ ÅÛÇø´¿¡¼­ Web Form À» ¼±ÅÃÇϰí, ÆÄÀÏÀ̸§À» 'List.aspx'·Î ÀÔ·ÂÇÑ ÈÄ '¿­±â'¸¦ Ŭ¸¯ÇÕ´Ï´Ù. ´ÙÀ½ ±×¸²°ú °°½À´Ï´Ù.

±×·³ ÇÁ·ÎÁ§Æ®¿¡ List.aspx°¡ Ãß°¡µË´Ï´Ù.

Ãß°¡µÈ List.aspx¸¦ ¿À¸¥ÂÊ Å¬¸¯Çؼ­, '½ÃÀÛ ÆäÀÌÁö·Î ¼³Á¤'À» ¼±ÅÃÇØ¼­ ½ÃÀÛÆäÀÌÁö·Î ÇÕ´Ï´Ù. ( ¿À¸¥ÂÊ ±×¸² ÂüÁ¶ ) ±×·¸°Ô ÇÏÁö ¾ÊÀ¸¸é ½ÃÀÛ¹öư ´­·¶À»¶§, ÇöÀçÀÇ ½ÃÀÛ ÆäÀÌÁöÀÎ Write.aspx ºÎÅÍ ½ÃÀÛÇϱ⠶§¹®¿¡ Á» ±ÍÂú½À´Ï´Ù.

±×¸®°í ±Û¾²±â ÆäÀÌÁö(Write.aspx) ¶§¿Í ¸¶Âù°¡Áö·Î ÆäÀÌÁö ¹ÙÅÁ ¾Æ¹«°÷À̳ª ¿À¸¥ÂÊ Å¬¸¯Çؼ­ ¼Ó¼ºÀ» ¼±ÅÃ,  ÆäÀÌÁö ·¹À̾ƿôÀ» FlowLayoutÀ¸·Î ¹Ù²ß´Ï´Ù. À̰ÍÀº ´Ù¸¥ ¸ðµç ÆäÀÌÁö¿¡µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

±Û¾²±â ÆäÀÌÁö °æ¿ì¿Í ¸¶Âù°¡Áö·Î, ¿ì¼±Àº ÇÊ¿äÇÑ ÄÁÆ®·ÑµéÀ» ²ø¾î´Ù ³õ°í ½ÃÀÛÇØ º¸°Ú½À´Ï´Ù. ±Û ¸ñ·Ï ÆäÀÌÁöÀÌ´Ï,  DB ·¹ÄÚµåµéÀ» ¸ñ·ÏÀ¸·Î Ç¥ÇöÇØÁÙ ÄÁÆ®·ÑÀÌ ÇÊ¿äÇϰڴµ¥¿ä, ±×¸¦ À§Çؼ± DataGrid, DataList, Repeater µîÀ» ¾µ¼ö ÀÖ½À´Ï´Ù. °­Á¿¡¼­´Â DataGrid °¡ °¡Àå ¸¹Àº ±â´ÉÀ» Á¦°øÇϰí, ºñÁê¾óÇÏ°Ô ÀÛ¾÷ÇÒ¼ö ÀÖÀ¸´Ï DataGrid¸¦ ½áº¸°Ú½À´Ï´Ù.
±× ¿Ü¿¡µµ 'ÃÑ XX°³ÀÇ ±Û, XX/XXÆäÀÌÁö' °°Àº ÆäÀÌÁö ¹øÈ£ Ç¥½ÃÇÒ ºÎºÐµµ ÇÊ¿äÇϰí, ÆäÀÌÁö À̵¿ÇÏ´Â ºÎºÐµµ ÇÊ¿äÇϰí, ±Û¾²±â ¹öưµµ ÇÊ¿äÇϰڽÀ´Ï´Ù. µµ±¸ »óÀÚ¸¦ ¿­¾î, HTML ¶õÀÇ Table À» ÀÌ¿ëÇØ ·¹À̾ƿô ÀâÀ¸¸é¼­, Web Forms¶õ¿¡¼­ Label, HyperLink 3°³, DataGrid ¸¦ ²ø¾î´Ù³õ¾Æ ´ÙÀ½ ±×¸²Ã³·³ ¸¸µì´Ï´Ù.

°¡¿îµ¥ÀÇ Å×À̺í ÇüÅ·ΠÀÖ´Â °ÍÀÌ DataGrid ²ø¾î´Ù ³õÀº ¸ð½ÀÀÔ´Ï´Ù.  ÄÁÆ®·ÑµéÀÇ ID, ¼Ó¼ºÀ» ´ÙÀ½Ã³·³ ¹Ù²ß´Ï´Ù.
¡¡
ÄÁÆ®·Ñ (ID) ±×¿Ü ¼Ó¼º/¼³¸í
Label lblRecordCount Text : (ºñ¿öµÓ´Ï´Ù)
ù¹øÂ° HyperLink lnkPrevBtn Text : [ÀÌÀüÆäÀÌÁö]
µÎ¹øÂ° HyperLink lnkNextBtn Text : [´ÙÀ½ÆäÀÌÁö]
¼¼¹øÂ° HyperLink lnkWriteBtn Text : [±Û¾²±â]
NavigateUrl : Write.aspx
DataGrid dgrdMainList (ÀÏ´Ü ¾ÆÀ̵𸸠¹Ù²ß´Ï´Ù)

ù¹øÂ° Label Àº 'ÃÑ xx°³ÀÇ ±Û, xx/xx ÆäÀÌÁö' ¶ó°í, ÃÑ ±ÛÀÇ ¼ö¿Í ÇöÀç ÆäÀÌÁö ¹øÈ£¸¦ Ç¥½ÃÇÒ À§Ä¡ÀÔ´Ï´Ù. ù¹øÂ°, µÎ¹øÂ° HyperLink ´Â ÀÌÀüÆäÀÌÁö/´ÙÀ½ÆäÀÌÁö·Î À̵¿Çϱâ À§ÇÑ °ÍÀ̰í¿ä, ¸¶Áö¸· HyperLink ´Â ±Û¾²±â ÆäÀÌÁö(Write.aspx)·Î À̵¿Çϱâ À§ÇÑ °ÍÀÔ´Ï´Ù.
ÀÏ´ÜÀº ÀÌÀü/´ÙÀ½ À¸·Î À̵¿Çϵµ·Ï¸¸ ÇÏÁö¸¸, ´ÙÀ½¿¡ ÀÌÀü/´ÙÀ½ ´ë½Å ÆäÀÌÁö¹øÈ£·Î À̵¿ ÇÏ´Â ¸µÅ©( [<<][<] [1][2][3][4] [>][>>]  ÀÌ·± ½ÄÀ¸·Î ÆäÀÌÁö ¹øÈ£·Î À̵¿ÇÏ´Â ¸µÅ© )·Î ÇÏ´Â ¹æ¹ýµµ ´Ù·ç°Ú½À´Ï´Ù. ±×°Íµµ °°ÀÌ ´Ù·ç¸é ±¦È÷ º¹ÀâÇØÁú°Í °°¾Æ ÀÏ´Ü °£´ÜÈ÷¸¸ ÇÕ´Ï´Ù. À̹ø °­Á¿¡¼­ Áß¿äÇѰÍÀº DataGrid ÀÌÁö, ÆäÀÌÁö¸µÅ©´Â ¾Æ´Ï´Ï±î¿ä.
DataGrid´Â ¼³Á¤ÇÒ °ÍÀÌ ¸¹Àºµ¥, Àá½ÃÈÄ ¼³¸íÇϰڽÀ´Ï´Ù.


ÀÚ·á °¡Á®¿À±â

¸ñ·ÏÀÌ Ç¥ÇöµÇ·Á¸é ÀڷḦ Å×ÀÌºí¿¡¼­ °¡Á®¿Í¾ß °ÚÁÒ? ±×¸¦ À§Çؼ± ù¹øÂ°·Î ¿¬°á °´Ã¼ÀÎ SqlConnection ÇÊ¿äÇϰڽÀ´Ï´Ù. ±Û¾²±â ¶§¿Í ¸¶Âù°¡Áö·Î, µµ±¸ »óÀÚÀÇ 'µ¥ÀÌÅÍ' ¶õ¿¡¼­ SqlConnectionÀ» ÆäÀÌÁö¿¡ ²ø¾î´Ù ³õ½À´Ï´Ù. ±×¸®°í ¼Ó¼º¶õ¿¡¼­, ¿ì¼±Àº (Name)À» dbConnectionÀ¸·Î ¹Ù²Ù°í¿ä, Dynamic Properties ¶õ È®Àå, ConnectionString ¶õÀÇ [...] ¹öưÀ» Ŭ¸¯, 'µ¿Àû ¼Ó¼º' â¿¡¼­ '±¸¼º ÆÄÀÏÀÇ Å°¿¡ ¼Ó¼º ¸ÅÇÎ' üũ¹Ú½º¸¦ ¼±ÅÃÇÏ½Ã¸é ¹ØÀÇ ÅØ½ºÆ®¹Ú½º°¡ Ȱ¼ºÈ­µÇ°í 'dbConnection.ConnectionString' À̶ó ÀԷµǾî ÀÖÀ»°Ì´Ï´Ù.

 

Write.aspx¿¡¼­µµ º¸¾Ò¾ú½À´Ï´Ù.
'È®ÀÎ'À» Ŭ¸¯Çϰí, ¹ØÀÇ 'µ¥ÀÌÅÍ'¶õÀÇ ConnectionString Ç׸ñ º¸½Ã¸é, ÀÔ·ÂÇÏÁö ¾Ê¾Ò´Âµ¥µµ ¿¬°á¹®ÀÚ¿­ÀÌ µé¾î°¡ ÀÖÀ» °Ì´Ï´Ù. Write.aspx ÀÛ¾÷ÇÒ¶§ Web.config ÆÄÀÏ¿¡ ÀúÀåÇß´ø, ±× Ű¿¡ ÇØ´çÇÏ´Â °ªÀ» °¡Á®¿Â °ÍÀÌÁÒ. À̰ÍÀÌ ¿¬°á ¹®ÀÚ¿­À» Ű¿Í ¸ÅÇνÃŰ´Â ÀÌÀ¯ÀÔ´Ï´Ù. Çѹø ÀÔ·ÂÇØ µÎ¸é ´ÙÀ½¹ø¿£ ÀÔ·ÂÇÒ Çʿ䰡 ¾ø°í¿ä, ÇÑ °÷¿¡ ÀúÀåµÇ´Ï °ü¸®Çϱ⵵ ½±½À´Ï´Ù.

±×¸®°í ÀڷḦ °¡Á®¿Ã °´Ã¼°¡ ÇÊ¿äÇϰڴµ¥¿ä, ÀڷḦ °¡Á®¿À±â À§ÇØ SqlCommand°´Ã¼¸¦ »ç¿ëÇØ¼­ SqlDataReader·Î ÀÐÀ» ¼öµµ ÀÖ½À´Ï´Ù¸¸, À̹ø¿£ SqlDataAdapter¸¦ ½áº¸°Ú½À´Ï´Ù. µµ±¸»óÀÚ 'µ¥ÀÌÅÍ' ¶õ¿¡ SqlDataAdapter ¸¦ ²ø¾î ÆäÀÌÁö ¾Æ¹«°÷³ª ³õ½À´Ï´Ù. ±×·³ ÆíÁý ÆäÀÌÁö ÇÏ´Ü¿¡ sqlDataAdapter1 À̶õ °´Ã¼°¡ »ý±â¸é¼­ 'µ¥ÀÌÅÍ ¾î´ðÅÍ ±¸¼º ¸¶¹ý»ç'°¡ ½ÃÀ۵Ǵµ¥¿ä, Á÷Á¢ ¼Ó¼ºÀ» ÀÔ·ÂÇÒ °ÍÀÌ´Ï 'Ãë¼Ò'¸¦ ´­·¯ Ãë¼ÒÇÕ´Ï´Ù.
±×¸®°í ¼Ó¼ºÀ» ´ÙÀ½Ã³·³ ÆíÁýÇÕ´Ï´Ù.

  • (Name) dbDataAdapterGetSequences
  • DeleteCommand : (¾øÀ½) ( ÀÛÀº È­»ìÇ¥ ´­·¯ '(¾øÀ½)' ¼±ÅÃÇÏ½Ã¸é µË´Ï´Ù )
  • InsertCommand : (¾øÀ½)
  • UpdateCommand : (¾øÀ½)
  • SelectCommand : [+] ´­·¯ È®ÀåÇϽŠÈÄ, ´ÙÀ½À» ÀÔ·ÂÇÕ´Ï´Ù.
    • Connection : dbConnection
    • CommandText : select seq from cstVSBoard order by seq desc
¿À¸¥ÂÊ ±×¸²ÀÌ µ¥ÀÌÅͼ ¼Ó¼º ÆíÁýÇÑ ¸ð½ÀÀÔ´Ï´Ù.

¹æ±Ý ÀÛ¼ºÇÑ µ¥ÀÌÅͼÂÀº °Ô½ÃÆÇ Å×ÀÌºí¿¡¼­ seq Çʵ常 ÀüºÎ °¡Á®¿À±â À§ÇÑ °ÍÀÔ´Ï´Ù.
seq ´Â ÀÚµ¿ Áõ°¡Çü(identity)À¸·Î µÈ ÀϷùøÈ£·Î, ±ÛÀ» ±¸ºÐÇϱâ À§ÇÑ °ÍÀ̱⵵ Çϰí, ¿ª¼øÀ¸·Î Çϸé ÃÖ±Ù ±ÛºÎÅÍ ½ÃÀÛÇÏ´Â ¸ñ·Ï¿¡¼­ÀÇ ±ÛÀÇ ¼ø¼­À̱⵵ ÇÕ´Ï´Ù. ÀÌ °Ô½ÃÆÇ¿¡¼± seq Çʵ常 ¸ðµÎ °¡Á®¿Í¼­, ±×Áß ÇØ´ç ÆäÀÌÁöÀÇ ±ÛÀ» ¾Ë¾Æ³»¼­ ±× ±ÛÀÇ ·¹Äڵ带 ´Ù½Ã °¡Á®¿À´Â ¹æ½ÄÀ¸·Î ÆäÀÌ¡ ÇÒ »ý°¢ÀÔ´Ï´Ù. ·ÎÁ÷Àº Àá½ÃÈÄ ¼³¸íµå¸®°Ú°í¿ä, À§ ó·³ ¼³Á¤ÇϽŠÈÄ¿£ ¼Ó¼º¶õ ¾Æ·¡ºÎºÐ¿¡¼­ 'µ¥ÀÌÅÍ ¹Ì¸®º¸±â'¸¦ Ŭ¸¯ÇØ º¸¼¼¿ä. ¿À¸¥ÂÊ ±×¸² ÇÏ´Ü¿¡µµ ¸µÅ©°¡ º¸ÀÔ´Ï´Ù.

¡¡

'µ¥ÀÌÅÍ ÁýÇÕ Ã¤¿ì±â' ¹öưÀ» ´­·¯ °á°ú ¶õ¿¡ ÀÚ·á°¡ ³ª¿À¸é ¼º°øÀÔ´Ï´Ù. ±ÛÀ» Çϳª¸¸ ÀÔ·ÂÇß´Ù¸é À§ ±×¸²Ã³·³ 1 À̶õ ·¹ÄÚµå Çϳª¸¸ ³ª¿Ã°Ì´Ï´Ù.

ÀÌÁ¦ À§ Å×À̺í·Î ÇØ´ç ÆäÀÌÁöÀÇ seq ¹üÀ§¸¦ ¾Ë¾Æ³½ ÈÄ, ÇØ´ç ÆäÀÌÁö ·¹Äڵ带 ½ÇÁ¦·Î °¡Á®¿Ã ¸í·É °´Ã¼¸¦ ¼³Á¤Çغ¸°Ú½À´Ï´Ù. µµ±¸»óÀÚ 'µ¥ÀÌÅÍ'¶õ¿¡¼­ SqlCommand¸¦ ²ø¾î ³õ°í, ´ÙÀ½Ã³·³ ¼Ó¼ºÀ» ¼³Á¤ÇÕ´Ï´Ù.

  • (name) : dbCommandGetArticles
  • Connection : dbConnection
  • CommandText :
    select seq,writer,email,title,readed, writeDate from cstVSBoard
    where seq between @seqStart and @seqEnd
    order by seq desc
  • Paramters :
    ParameterName SqlDbType
    @seqStart Int
    @seqEnd Int


ÆäÀÌ¡ ¼Ò½º ÀÛ¼º ¹× Å×½ºÆ®

ÀÌÁ¦ Áö±Ý±îÁö ¼³Á¤ÇÑ DB°ü·Ã °´Ã¼¸¦ ÀÌ¿ëÇØ¼­, ¿øÇÏ´Â ÆäÀÌÁöÀÇ ±ÛÀ» DataGrid¿¡ ¹ÙÀεùÇÒ ·ÎÁ÷À» ÀÛ¼ºÇÒ Â÷·ÊÀÔ´Ï´Ù.

°Ô½ÃÆÇ ¸ñ·Ï¿¡¼±, ¼ö¸¹Àº ±ÛÀ» ÀüºÎ ÇÑÆäÀÌÁö¿¡ º¸¿©ÁÙ¼ø ¾ø±â¶§¹®¿¡, º¸Åë 'ÆäÀÌ¡'À̶ó ºÎ¸£´Â UI¸¦ ½á¼­ ¿©·¯ ÆäÀÌÁö¿¡ ³ª´²¼­ º¸¿©ÁÖ°Ô µË´Ï´Ù. ÆäÀÌ¡Àº, DataGrid¿¡¼­ Áö¿øÇϱ⵵ Çϴµ¥¿ä, ¿©±â¼­´Â ÆäÀÌ¡ÇÏ´Â ·ÎÁ÷À» Á÷Á¢ ÀÛ¼ºÇϰڽÀ´Ï´Ù.
DataGrid¿¡¼­ Áö¿øÇÏ´Â ÆäÀÌ¡Àº ¸ðµç ·¹ÄÚµåÀÇ ÇÊ¿äÇÑ Çʵ带 °¡Á®¿Í¼­, ±×Áß ÇØ´ç ÆäÀÌÁöÀÇ ·¹Äڵ常 º¸¿©ÁÖ´Â °ÍÀÔ´Ï´Ù. ±×·¡¼­ ±ÛÀÌ ¼ö¸¸°³ µÇ¸é Á» ´À·ÁÁý´Ï´Ù. »ç½Ç ¾î´À ÆäÀÌÁö¸¦ º¸¿©ÁÖ±â À§Çؼ± ÇØ´ç ÆäÀÌÁöÀÇ ÀڷḸ ÀÖÀ¸¸é µÇ´Â °ÍÀε¥, ¸ðµç ·¹Äڵ带 °¡Á®¿Â´Ù´Â °Í ÀÚü°¡ ºñÈ¿À²ÀûÀÎ °ÍÀ̰ÚÁÒ.
±×·±µ¥ ¿øÇÏ´Â ÆäÀÌÁöÀÇ ·¹Äڵ常 °¡Á®¿À´Â °ÍÀÌ ±×¸® ½±Áö¸¸Àº ¾ÊÀº°Í °°½À´Ï´Ù. Áß°£¸¸ ²÷¾î °¡Á®¿À´Â °Íµµ ±×·¸°í, ±×·³¿¡µµ ÃÑ ·¹ÄÚµå °¹¼ö´Â ¾Ë¾Æ¾ß ¸î ÆäÀÌÁö±îÁö Á¸ÀçÇÏ´ÂÁö ¾Ë¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.
¿©·¯ ·ÎÁ÷ÀÌ ÀÖ°Ú½À´Ï´Ù¸¸, ¿©±â¼­´Â seq Çʵ常 ¸ðµÎ °¡Á®¿Í¼­, ±×°ÍÀ¸·Î ±ÛÀÇ °¹¼ö¿Í, Çö ÆäÀÌÁöÀÇ seq ¹üÀ§¸¦ ¾Ë¾Æ³»°í, ±× ¹üÀ§¿¡ µû¶ó ´Ù½Ã select ¹®À» È£ÃâÇϵµ·Ï ÇØ¼­ ÆäÀÌ¡ÇϰڽÀ´Ï´Ù. ·¹ÄÚµå Àüü¸¦ °¡Á®¿Â´Ù ÇØµµ, intÇüÀÇ ÇϳªÀÇ Çʵ常 °¡Á®¿À±â ¶§¹®¿¡ ¼Óµµ°¡ ºü¸¨´Ï´Ù. ºñ±³Àû °£´ÜÇÑ ·ÎÁ÷ÀÓ¿¡µµ DataGrid ÀÚü ÆäÀÌ¡ º¸´Ù ¿­¹èÀÌ»ó »¡¶óÁú¼ö ÀÖ½À´Ï´Ù. ( À̺¸´Ù ´õºü¸¥ ·ÎÁ÷µµ Àִµ¥, ¼Ò½º°¡ Á» º¹ÀâÇÏ°Ô µË´Ï´Ù. ´Ù¸¥ °­Á¿¡¼­ ´Ù·ç°Ú½À´Ï´Ù )

¼Ö·ç¼Ç Ž»ö±â¿¡¼­ List.aspx¸¦ ¿À¸¥ÂÊ Å¬¸¯, 'Äڵ庸±â'¸¦ ¼±ÅÃÇØ¼­ ÄÚµå·Î ÀüȯÇÕ´Ï´Ù. ¾Æ¸¶µµ Page_Load À̺¥Æ® ºÎºÐ¿¡ Ä¿¼­°¡ °¡ÀÖÀ»ÅÙµ¥¿ä, ±× ÇÔ¼ö¸¦ ´ÙÀ½Ã³·³ ÀÛ¼ºÇÕ´Ï´Ù.

private void Page_Load(object sender, System.EventArgs e)
{
  int recordCount,pageCount,page;
  const int pageSize = 15; // ÇÑ ÆäÀÌÁöÀÇ ±ÛÀÇ °¹¼ö

  // cstVSBoard¿¡¼­ seq Çʵå Àüü¸¦ °¡Á®¿Í¼­ 
  // DataTableÀÎ dtSeq¿¡ ´ã½À´Ï´Ù.
  System.Data.DataTable dtSeq=new DataTable();
        
  dbConnection.Open();	
  dbDataAdapterGetSequences.Fill(dtSeq);

  // dtSeq ÀÇ ÇàÀÇ ¼ö(Rows.count)·Î
  // °Ô½ÃÆÇ ±ÛÀÇ ÃÑ °¹¼ö¸¦ ¾Ë¾Æ³À´Ï´Ù.
  recordCount=dtSeq.Rows.Count;
  if(recordCount==0) 
  {
    pageCount=0;
    page=1;
  }
  else 
  {
    // ÃÑ ÆäÀÌÁö ¼ö¸¦ ¾Ë¾Æ³À´Ï´Ù.
    pageCount=(int)(recordCount-1)/pageSize+1;

    // Çö ÆäÀÌÁö ¹øÈ£¸¦ ¾Ë¾Æ³À´Ï´Ù. 
    try 
    {
      page=int.Parse(Request.QueryString["p"]);
    }
    catch(Exception)
    {
      page = 1;
    }
    if(page<1) page=1;
    if(page>pageCount) page=pageCount;

    // ÇöÆäÀÌÁö¿¡ ÇØ´çÇÏ´Â seqÀÇ ¹üÀ§¸¦ ¾Ë¾Æ³À´Ï´Ù.

    int recordPosStart = (page-1)*pageSize;
    int recordPosEnd = (page)*pageSize-1;
    if(recordPosEnd>=recordCount ) recordPosEnd=recordCount-1;

    int seqEnd=(int)dtSeq.Rows[recordPosStart][0];
    int seqStart=(int)dtSeq.Rows[recordPosEnd][0];

    // ÇØ´ç ¹üÀ§ÀÇ ·¹Äڵ带 °¡Á®¿É´Ï´Ù.

    dbCommandGetArticles.Parameters["@seqStart"].Value=seqStart;
    dbCommandGetArticles.Parameters["@seqEnd"].Value=seqEnd;

    // ·¹ÄÚµåµéÀ» DataGrid¿¡ ¹ÙÀεùÇÕ´Ï´Ù.

    dgrdMainList.DataSource = 
      dbCommandGetArticles.ExecuteReader(CommandBehavior.CloseConnection);
    dgrdMainList.DataBind();
  }
  dbConnection.Close();

  lblRecordCount.Text = 
    String.Format("ÃÑ <b>{0}</b> °³ÀÇ ±Û, <b>{1}</b>/{2} ÆäÀÌÁö"
    , recordCount, page, pageCount);

  // ÀÌÀü ÆäÀÌÁö, ´ÙÀ½ÆäÀÌÁö ¸µÅ©¸¦ ¼³Á¤ÇÕ´Ï´Ù.
  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;
}
¼Ò½º´Â ¸®¸¶Å©·Î °£´ÜÈ÷ ¼³¸íÇØµÎ¾ú½À´Ï´Ù. ¿©·¯ºÐµµ ³ª¸§´ë·Î ÆäÀÌ¡ ·ÎÁ÷À» ±¸ÇöÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.

ÀÌÁ¦ ¿ÏÀüÈ÷ ¿Ï¼ºµÈ °ÍÀº ¾Æ´Õ´Ï´Ù¸¸, Å×½ºÆ®Çغ¼ ¼ö´Â ÀÖ½À´Ï´Ù. DataGrid¿¡´Â ÀÚµ¿À¸·Î Ä÷³À» ¸¸µå´Â ±â´ÉÀÌ À־( AutoGenerateColumns=true ), ¾Æ¹« ¼³Á¤ ¾ÈÇØµµ ( ¿¹»Ú°Ô´Â ¾È³ª¿Íµµ ) ÀÚ·áÀÇ ³»¿ëÀº Ãâ·ÂµË´Ï´Ù. ½ÃÀÛ ¹öưÀ» ´­·¯ Å×½ºÆ® ÇØº¸¼¼¿ä.

±Û ¿©·¯°³¸¦ Ãß°¡Çؼ­ ÆäÀÌ¡µµ Å×½ºÆ®Çغ¸¼¼¿ä. À§ ±×¸²Àº ·¹ÄÚµå 40°³ ³Ö¾î¼­ Å×½ºÆ®ÇÑ °ÍÀÔ´Ï´Ù. ¾Æ·¡¿¡ [ÀÌÀüÆäÀÌÁö], [´ÙÀ½ÆäÀÌÁö] ¸µÅ©À¸·Î ÀÌÀü/´ÙÀ½ ÆäÀÌÁö·Î À̵¿ÇÒ¼ö ÀÖ°í, [±Û¾²±â] ¹öưÀ¸·Î ±ÛÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. À§¿¡´Â 40°³ÀÇ ±ÛÀÌ ÀÖ°í, ÇöÀç 3°³ ÆäÀÌÁö Áß 1ÆäÀÌÁö¶ó°í Ç¥½ÃµÇ¾îÀÖ½À´Ï´Ù.


DataGrid ÆíÁý

°ñ°ÝÀº °ÅÀÇ ¿Ï¼ºµÇ¾ú°í, ÀÌÁ¦ DataGrid¸¦ ÆíÁýÇØ¼­ ¿øÇÏ´Â Çʵ常, Á»´õ ¿¹»Ú°Ô ³ª¿Àµµ·Ï ÇÏ´Â °ÍÀÌ ³²¾Ò½À´Ï´Ù. DataGrid¸¦ ÆíÁýÇØ º¸°Ú½À´Ï´Ù.

¾à°£ µðÀÚÀÎ ÇØ³õ°í ½ÃÀÛÇÏÁÒ. µ¥ÀÌÅͱ׸®µå¸¦ ¿À¸¥ÂÊ ¹öư Ŭ¸¯, ¸Þ´º¿¡¼­ 'ÀÚµ¿¼­½Ä'À» ¼±ÅÃÇÕ´Ï´Ù. ±×·³ ´Ù¾çÇÑ ¼­½ÄÀ» ¼±ÅÃÇÒ¼ö Àִµ¥¿ä, Á¦°æ¿ì¿£ ±×Áß '±âº» 1'À» ¼±ÅÃÇϰڽÀ´Ï´Ù. ¿øÇϽô °ÍÀ» ¼±ÅÃÇØº¸¼¼¿ä.

±×·³ ±×¸®µå¿¡ »öÀÌ µé¾î°¡¸é¼­ ¾à°£Àº µðÀÚÀÎµÈ »óŰ¡ µË´Ï´Ù. VS.NET¿¡¼­ ÀÚµ¿À¸·Î ¼­½ÄÀ» Á¤ÇØÁÖ´Â °ÍÀä, ³ªÁß¿¡ ¸¾¿¡ ¾Èµé¸é 'ÀÚµ¿ ¼­½Ä Á¦°Å'¸¦ ¼±ÅÃÇØ¼­ Á¦°ÅÇÒ¼öµµ ÀÖ°í, HTML ¼Ò½º·Î Á÷Á¢ º¯°æÇϼŵµ µË´Ï´Ù.

±×¸®°í DataGrid ¼Ó¼º¶õ¿¡¼­ ´ÙÀ½ ¼Ó¼ºÀ» º¯°æÇÕ´Ï´Ù.

  • AutoGenerateColumns : false
  • EnableViewState : false
  • Width : 600

Áö±Ý±îÁö´Â ±×¸®µå°¡ ÀÚµ¿À¸·Î Ä÷³À» ¸¸µéµµ·Ï ÇßÁö¸¸, Ä÷³À» ÁöÁ¤Çؼ­ ¿øÇÏ´Â ¸ð¾çÀ¸·Î ³ª¿Àµµ·Ï Çϱâ À§ÇØ AutoGenerateColumns¸¦ false·Î ÁÖ¾ú½À´Ï´Ù. Width´Â ¿øÇÏ´Â Å©±â´ë·Î ÁÖ½Ã¸é µË´Ï´Ù.
±×¸®°í ÀÌ ÆäÀÌÁö¿¡¼± PostBack ¹öưÀ» »ç¿ëÇÏÁö ¾Ê±â ¶§¹®¿¡ ViewState¸¦ À¯ÁöÇÒ Çʿ䰡 ¾ø¾î EnableViewState¸¦ false·Î ÇÕ´Ï´Ù. true/false ·Î ¹Ù²ã°¡¸ç ½ÇÇàÇØ¼­ ¼Ò½ºº¸±â ÇØº¸½Ã¸é ¾î¶² Â÷À̰¡ ÀÖ´ÂÁö È®ÀÎÇϽǼö ÀÖ½À´Ï´Ù. __VIEWSTATE ¶õ È÷µç Çʵå Å©±â°¡ ÆÅ ÁÝ´Ï´Ù.

AutoGenerateColumns¸¦ false·Î ÇßÀ¸´Ï, Ä÷³À» ÇϳªÇϳª Á¤ÇØÁÖ¾î¾ß °ÚÁÒ? ±×¸®µå¸¦ ¿À¸¥ÂÊ Å¬¸¯Çؼ­ ¸Þ´º¿¡¼­ '¼Ó¼º ÀÛ¼º±â'¸¦ ¼±ÅÃÇÕ´Ï´Ù. ±×·³ 'dgrdMainList ¼Ó¼º' À̶õ âÀÌ ¶ß´Âµ¥, °Å±â¼­ ¿ÞÂÊ¿¡¼­ '¿­'À» ¼±ÅÃÇÕ´Ï´Ù.

±×¸®°í ±×¸²Ã³·³ '¹ÙÀεùµÈ ¿­'À» ¼±ÅÃ, [>] ¹öưÀ¸·Î '¼±ÅÃÇÑ ¿­'¶õ¿¡ Ãß°¡Çϰí, ¸Ó¸®±ÛÅØ½ºÆ®¸¦ '¹øÈ£', µ¥ÀÌÅÍ Çʵ带 'seq'¸¦ ÀÔ·ÂÇÕ´Ï´Ù. °°Àº ½ÄÀ¸·Î Á¦¸ñ, À̸§, ³¯Â¥, Á¶È¸ µîÀ» Ãß°¡ÇÕ´Ï´Ù. ´ÙÀ½°ú °°½À´Ï´Ù.
¡¡
¿­ Çü½Ä ¸Ó¸®±Û ÅØ½ºÆ® µ¥ÀÌÅÍ ÇÊµå µ¥ÀÌÅÍ Çü½Ä ÁöÁ¤ ½Ä
¹ÙÀεùµÈ ¿­ ¹øÈ£ seq (ÀԷ¾ÈÇÔ)
ÅÛÇø´ ¿­ Á¦¸ñ (ÀԷ¾ÈÇÔ) (ÀԷ¾ÈÇÔ)
ÅÛÇø´ ¿­ À̸§ (ÀԷ¾ÈÇÔ) (ÀԷ¾ÈÇÔ)
¹ÙÀεùµÈ ¿­ ³¯Â¥ writeDate {0:yyyy-MM-dd}
¹ÙÀεùµÈ ¿­ Á¶È¸ readed (ÀԷ¾ÈÇÔ)

¹øÈ£, ³¯Â¥, Á¶È¸ ó·³ µ¥ÀÌÅÍ °ª ±×´ë·Î Ãâ·Â¸¸ ÇÏ¸é µÇ¸é ¹ÙÀεùµÈ ¿­À» ¾µ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ÇÏÀÌÆÛ¸µÅ©¶ó¸é ÇÏÀÌÆÛ¸µÅ© ¿­À» ¾µ¼ö À־, Á¦¸ñÀ̳ª À̸§À» ÇÏÀÌÆÛ¸µÅ© ¿­·Î ÇÒ¼öµµ Àִµ¥¿ä, ¾à°£ÀÌ¶óµµ ·ÎÁ÷ÀÌ µé¾î°¡¾ß ÇÑ´Ù¸é ¹ÙÀεùµÈ ¿­À̳ª ÇÏÀÌÆÛ¸µÅ© ¿­À» ¾µ¼ö°¡ ¾ø¾î 'ÅÛÇø´ ¿­'À» ½á¾ß ÇÕ´Ï´Ù. ÅÛÇø´ ¿­ÀÇ °æ¿ì Ç¥½ÃÇÒ ³»¿ëÀ» Á÷Á¢ ÆíÁýÇØ¾ß ÇÕ´Ï´Ù. Àá½ÃÈÄ ÇϰԵ˴ϴÙ.

±×¸®°í ¿ÞÂÊÀÇ '¼­½Ä'¶õÀ» ´­·¯ ¼­½ÄÀ» ÆíÁýÇÕ´Ï´Ù. µðÀÚÀΰú °ü·ÃµÈ ºÎºÐÀ̰ڴµ¥, »ç¿ë¹ýµµ ÀÍÈú°â ¾à°£¸¸ ÆíÁýÇØº¸°Ú½À´Ï´Ù.

À§ ±×¸² ó·³, ¿­¿¡¼­ ¿øÇÏ´Â Ç׸ñÀ» ¼±ÅÃÇØ¼­ ÆíÁýÇÏ½Ã¸é µË´Ï´Ù. ¹øÈ£¶õ È®ÀåÇØ º¸´Ï ¸Ó¸®±Û, ¹Ù´Ú±Û, Ç׸ñ ¼¼°¡Áö°¡ Àִµ¥¿ä, ÀÌÁß ¸Ó¸®±Û, Ç׸ñ µÑÀ» °°ÀÌ ÆíÁýÇÕ´Ï´Ù. ´ÙÀ½Ã³·³ Ç׸ñÀ» ÆíÁýÇÕ´Ï´Ù.

  • ¹øÈ£ : (Ç׸ñ/¸Ó¸®±Û ¸ðµÎ) °¡¿îµ¥ ¸ÂÃã, '¼¿¿¡¼­ ÅØ½ºÆ® ÁٹٲÞ' üũ ÇØÁ¦
  • Á¦¸ñ : ( ±âº»°ª´ë·Î ³öµÓ´Ï´Ù )
  • À̸§ : (Ç׸ñ/¸Ó¸®±Û ¸ðµÎ) °¡¿îµ¥ ¸ÂÃã, '¼¿¿¡¼­ ÅØ½ºÆ® ÁٹٲÞ' üũ ÇØÁ¦
  • ³¯Â¥ : (Ç׸ñ/¸Ó¸®±Û ¸ðµÎ) °¡¿îµ¥ ¸ÂÃã, '¼¿¿¡¼­ ÅØ½ºÆ® ÁٹٲÞ' üũ ÇØÁ¦
  • Á¶È¸ : (Ç׸ñ/¸Ó¸®±Û ¸ðµÎ) °¡¿îµ¥ ¸ÂÃã, '¼¿¿¡¼­ ÅØ½ºÆ® ÁٹٲÞ' üũ ÇØÁ¦

Á¦¸ñÀ» Á¦¿ÜÇÑ ´Ù¸¥ ¸ðµç Ç׸ñµéÀ» °¡¿îµ¥ Á¤·ÄÇϰí, ÅØ½ºÆ® ÁٹٲÞ( <td> ÀÇ nowrap ¿¡ ÇØ´çµË´Ï´Ù )À» ÇÏÁö ¾Êµµ·Ï Çß½À´Ï´Ù. ÀÌ·¸°Ô Çϸé Á¦¸ñÀ» ±æ°Ô ÀÔ·ÂÇßÀ» °æ¿ì¿¡µµ ´ëÃæ Á¤·ÄµË´Ï´Ù.
Á¦¸ñÀÌ Áٹٲ޵Ǵ °Å¾ß ¾î¿¼ö ¾øÁö¸¸, ³¯Â¥°¡ ÁÙ¹Ù²Þ µÇ°Å³ª Çϸé Å×À̺íÀÌ ¾û¸ÁÀÌ µÇ°Åµç¿ä. ÀÌ »óÅ¿¡¼­ Á¦¸ñ¶õÀÇ ³Êºñ¸¦ 10000px ·Î ¾ÆÁÖ Å©°Ô ÁÖ¸é, Á¦¸ñ¶õÀÌ ÃÖ´ëÈ­, ´Ù¸¥ ¶õÀº ÃÖ¼ÒÈ­ µÇ¸é¼­ ¾îÁö°£ÇÑ °æ¿ì¿¡µµ ´ëÃæ Á¤·ÄµÇ¾î ³ª¿À´Â(?) ·¹À̾ƿôÀÌ µË´Ï´Ù. ÀϺΠ°Ô½ÃÆÇÀÌ ±×·¯ÇÑ ½ÄÀ¸·Î Á¤·ÄÇÏ´õ±º¿ä. ¿©·¯ºÐµµ ¿©·¯ ¹æ½ÄÀ¸·Î ÇØº¸¼¼¿ä.

±×¸®°í, ¾Æ±î ¿­ Áß¿¡ 'Á¦¸ñ'°ú 'À̸§' ¶õÀº ÅÛÇø´ ¿­·Î ÇÏ°í ³»¿ëÀº ÀÔ·ÂÇÏÁö ¾Ê¾Ò¾ú½À´Ï´Ù. Á¦¸ñÀ̳ª À̸§Àº ¾à°£ÀÇ ·ÎÁ÷ÀÌ µé¾î°¡¾ß Çϱ⠶§¹®¿¡ ÅÛÇø´¿­·Î Çߴµ¥¿ä, ±× ³»¿ëÀ» ÀÔ·ÂÇÒ Â÷·ÊÀÔ´Ï´Ù.
ÅÛÇø´ ¿­Àº DataGrid¸¦ ¿À¸¥ÂÊ Å¬¸¯, 'ÅÛÇø´ ÆíÁý' ¼±ÅÃÇØ¼­ ÆíÁýÇÒ¼ö ÀÖ½À´Ï´Ù¸¸, °£´ÜÇÑ °ÍÀ̶ó ±×³É HTML ¸ðµå·Î ÀüÈ¯ÇØ¼­ ÆíÁýÇϰڽÀ´Ï´Ù. HTML ¸ðµå·Î ÀüȯÇÑ ÈÄ ¼Ò½º¿¡¼­ TemplateColumn À¸·Î µÈ Á¦¸ñ, À̸§ ¶õÀ» ã¾Æ ´ÙÀ½Ã³·³ ÀÔ·ÂÇÕ´Ï´Ù. ÆÄ¶õ»ö ºÎºÐÀÌ ÀÔ·ÂÇÒ ºÎºÐÀÔ´Ï´Ù.

<asp:datagrid id="dgrdMainList" runat="server" ...(»ý·«)... >

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

    <asp:TemplateColumn HeaderText="Á¦¸ñ">
      <ItemTemplate>
        <%# BindTitle(Container.DataItem) %>
      </ItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="À̸§">
      <HeaderStyle Wrap="False"></HeaderStyle>
      <ItemStyle Wrap="False"></ItemStyle>
      <ItemTemplate>
        <%# BindWriter(Container.DataItem) %>
      </ItemTemplate>
    </asp:TemplateColumn>

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

</asp:datagrid>
¾à°£Àº ·ÎÁ÷ÀÌ ÇÊ¿äÇØ¼­, BindTitle, BindWriter ¶ó´Â ¸Þ¼­µå¸¦ Á¤ÀÇÇØ¼­ ±× ¸Þ¼­µå¸¦ È£ÃâÇϵµ·Ï ÇÏ·Á´Â °ÍÀÔ´Ï´Ù. ÄÚµå º¸±â·Î Àüȯ( ¸Þ´º¿¡¼­ º¸±â-> ÄÚµå, ȤÀº F7 ´©¸§ ) ÇØ¼­ ¹æ±Ý ³ÖÀº BindTitle, BindWriter ¶ó´Â ¸Þ¼­µå¸¦ Ŭ·¡½º¿¡ Ãß°¡ÇÕ´Ï´Ù. ´ÙÀ½ ¼Ò½º ÆÄ¶õ»ö ºÎºÐÀÔ´Ï´Ù.

public class List : System.Web.UI.Page
{
...(»ý·«)...

  protected string BindWriter( Object item)
  {
    string writer = (string)DataBinder.Eval(item, "writer");
    string email = (string)DataBinder.Eval(item, "email");
    writer=Server.HtmlEncode(writer);
    email=Server.HtmlEncode(email);
    if(email!="")
      writer=String.Format("<a href=\"mailto:{0}\">{1}</a>", email,writer);
    return writer;
  }

  protected string BindTitle( Object item)
  {
    int seq = (int) DataBinder.Eval(item, "seq");
    string title = Server.HtmlEncode((string)DataBinder.Eval(item, "title"));
    return String.Format("<a href=\"View.aspx?n={0}\">{1}</a>", seq,title);
  }

...(»ý·«)...
}
À̸§ÀÇ °æ¿ì, ¸ÞÀÏ ÁÖ¼Ò¸¦ ÀÔ·ÂÇßÀ¸¸é ¸µÅ©¸¦ °É°í, ÀÔ·Â ¾ÈÇßÀ¸¸é ¸µÅ©¾øÀÌ Ãâ·ÂÇÏ°Ô µË´Ï´Ù. Á¦¸ñ¶õÀº ¾ÆÁ÷Àº ¾È¸¸µé¾úÁö¸¸ ±ÛÀÇ ³»¿ëÀ» º¸¿©ÁÙ View.aspx ¶ó´Â ÆäÀÌÁö¸¦ seq °ª°ú ÇÔ²² È£ÃâÇϵµ·Ï Á¦¸ñ¿¡ ¸µÅ©¸¦ °É¾ú½À´Ï´Ù.
Á¦¸ñ¶õÀÇ °æ¿ì ¸µÅ©¸¸ °É¸é µÇ±â¿¡ ÇÏÀÌÆÛ¸µÅ© ¿­À» ½áµµ µË´Ï´Ù¸¸, »ç¿ëÀÚ°¡ HTML ű׸¦ ÀÔ·ÂÇϸé űװ¡ ½ÇÇàµÇ¾î ¹ö¸®±â ¶§¹®¿¡ ±×°ÍÀ» ¹æÁöÇϱâ À§ÇØ Server.HtmlEncode ¸Þ¼­µå¸¦ ÀÌ¿ëÇØ¼­ űװ¡ ½ÇÇà ¾ÈµÇµµ·Ï ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. °£´ÜÇÑ ·ÎÁ÷À̶ó ÇØµµ, µ¥ÀÌÅÍ ±×¸®µåÀÇ ÇÏÀÌÆÛ¸µÅ© ¿­ »ç¿ëÇϱâ´Â ¾î·Á¿ö ÅÛÇø´ ¿­·Î Çß½À´Ï´Ù.
ÀÌó·³ ÇØ´ç ¿­À» Ç¥ÇöÇÒ¶§ ·ÎÁ÷ÀÌ ÇÊ¿äÇϸé, ÅÛÇø´ ¿­·Î Á¤ÀÇÇÑ ÈÄ ÇÊ¿äÇÏ´Ù¸é ¸Þ¼­µå·Î Á¤ÀÇÇØ¼­ <ItemTemplate></ItemTemplate> ¶õ¿¡ ³ÖÀ¸¸é µË´Ï´Ù.
¿Ï·á

ÀÌÁ¦ ¸ñ·Ï ÆäÀÌÁö´Â ¾î´À Á¤µµ ¿Ï¼ºµÈ ¼ÀÀÔ´Ï´Ù. ½ÃÀÛ¹öưÀ» ´­·¯ ½ÇÇàÇØº¸¼¼¿ä. Á¦°¡ ½ÇÇàÇÑ È­¸éÀº ´ÙÀ½°ú °°½À´Ï´Ù.

ÀÌÀüÆäÀÌÁö/´ÙÀ½ÆäÀÌÁö ¸µÅ©·Î ÆäÀÌÁö¸¦ ¾Õ µÚ·Î À̵¿ÇÒ¼ö ÀÖ°í, ±Û¾²±â ¹öưÀ¸·Î ±ÛÀ» ÀÔ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸ÞÀÏÁÖ¼Ò¸¦ ÀÔ·ÂÇß´Ù¸é À̸§¿¡ ¸µÅ©°¡ °É·Á ÀÖ½À´Ï´Ù.

Á¦¸ñÀ» Ŭ¸¯Çϸé, ¾ÆÁ÷Àº ¸¸µéÁö ¾Ê¾ÒÁö¸¸ ±ÛÀÇ ³»¿ëÀ» È®ÀÎÇÒ ±Ûº¸±â ÆäÀÌÁö, View.aspx ·Î À̵¿ÇÏ°Ô µË´Ï´Ù. ´ÙÀ½ °­Á¿¡¼± ±Û º¸±â ÆäÀÌÁö¸¦ ¸¸µé¾îº¸°Ú½À´Ï´Ù.

 

Back