Sunday, September 05, 2010
Retabbed
Login | Register
아티클
  Search
ASP.NET으로 만드는 게시판 - [7]게시물 수정
ASP.NET으로 만드는 게시판 - [7]게시물 수정

현재 보여지고 있는 게시물을 수정하는 기능을 구현해 보자. Panel을 사용하여 한 컨트롤 내에서 여러 가지 기능을 구현 하는 방법을 알아 본다.

ViewPost.ascx를 다음과 같이 수정한다.

< asp:Panel ID ="pnlViewPost" Visible =False Runat =server>

        < table >

               < tr class ="ViewPostSubject">

                       < td nowrap > 제목:</td><tdwidth="100%"><asp:LabelID="lblSubject"Runat=server></asp:Label></td>

               </ tr >

               < tr >

                       < td nowrap > 글쓴이:</td><tdwidth="100%"><asp:LabelID="lblCreator"Runat=server></asp:Label></td>

               </ tr >

               < tr >

                       < td nowrap > 날짜:</td><tdwidth="100%"><asp:LabelID="lblCreateDate"Runat=server></asp:Label></td>

               </ tr >

               < tr class ="ViewPostBodyText">

                       < td colspan ="2">< asp:Label ID ="lblBodyText" Runat =server></ asp:Label ></ td >

               </ tr >

               < tr >

                       < td >< asp:LinkButton ID ="EditPost" Runat =server> 수정</asp:LinkButton></td>

               </ tr >

        </ table >

</ asp:Panel >

 

< asp:Panel ID ="pnlEditPost" Visible =False Runat =server>

       < table >

             < tr >

                    < td >

                           < label > 제목:</label><asp:TextBoxID="tbSubject"Runat=server></asp:TextBox>

                    </ td >

             </ tr >

             < tr >

                    < td >

                           < asp:TextBox ID ="tbBodyText" Runat =server TextMode =MultiLine Rows =20 Width ="500px" Wrap =True></ asp:TextBox >

                    </ td >

             </ tr >                      

             < tr >

                    < td >

                           < asp:LinkButton ID ="lbSavePost" Runat =server> 저장</asp:LinkButton>

                           < asp:LinkButton ID ="lbCancelPost" Runat =server> 취소</asp:LinkButton>

                    </ td >

             </ tr >                      

       </ table >

</ asp:Panel >

굵게 된 부분이 새로 추가된 부분이다. 특별한 것은 없고 새로운 Panel안에 게시물 수정에 관한 폼을 디자인 했다. 두 개의 Panel은 기본적으로 보여지지 않는 상태이며(Visible=False) 필요에 따라 적절한 Panel을 보이게 하는 방식을 사용한다. 코드를 보자.

               private void Page_Load(object sender, System.EventArgs e)

               {

                       PostController pc = new PostController();

                       if(Session["CPostSystemID"] == null)

                              return;

                     pnlViewPost.Visible = true;

                    pnlEditPost.Visible = false;

 

                       PostInfo pi = pc.Get((int)Session["CPostSystemID"]);

                       lblSubject.Text = pi.Subject;

                       lblCreator.Text = pi.CreatorName;

                       lblCreateDate.Text = pi.CreateDate.ToString();

                       lblBodyText.Text = pi.BodyText;

               }

 

               private void EditPost_Click(object sender, EventArgs e)

               {

                    pnlEditPost.Visible = true;

                    pnlViewPost.Visible = false;

                       PostController pc = new PostController();

                       PostInfo pi = pc.Get((int)Session["CPostSystemID"]);

                       tbSubject.Text = pi.Subject;

                       tbBodyText.Text = pi.BodyText;

               }

기본 Page_Load에서는 ViewPost Panel이 보이게 하고 수정 버튼을 누르면 EditPost Panel을 보이게 한다. 게시물 DB에서 내용을 가져와서 각각의 TextBox에 넣어준다. “저장”을 클릭 하면 다음 루틴이 실행된다.

               private void lbSavePost_Click(object sender, EventArgs e)

               {

                       PostController pc = new PostController();

                       PostInfo pi = pc.Get((int)Session["CPostSystemID"]);

 

                       pi.PostSystemID = (int)Session["CPostSystemID"];

                       pi.CreateDate = DateTime.Now;

                       pi.Subject = tbSubject.Text;

                       pi.BodyText = tbBodyText.Text;

                       pc.Update(pi);

 

                    Response.Redirect(Request.RawUrl);

               }

TextBox의 새로운 값을 가져와서 DB를 업데이트하고 현재 페이지를 갱신한다. 페이지를 갱신하면 수정 모드에서 게시물 보기 모드로 다시 빠져 나가게 된다. 구현된 화면은 다음과 같다.

PostEdit.gif

소스: http://www.code99.net/tabid/842/ItemID/26/Default.aspx


게시일자 Wednesday, January 04, 2006 (Archive on Wednesday, January 11, 2006)
게시자: 사이트관리자  저자: 불나방
돌아가기

평점:
평가:
평가 올리기

현재평점평균:
Terms | Privacy | host
Copyright 2005 Code99.NET
 | 아티클 | 자료실 | 블로그 | Q&A | 관리자에게