login register Sysop! about ME  
qrcode
    최초 작성일 :    2002년 10월 07일
  최종 수정일 :    2002년 10월 07일
  작성자 :    cassatt
  편집자 :    Taeyo (김 태영)
  읽음수 :    24,157

강좌 목록으로 돌아가기

필자의 잡담~

페이지 추가/컨트롤 설정

지금껏 따라해 오셨다면 글 삭제 페이지는 직접 만드실수 있을 듯 합니다. 앞 강좌 글보기 란에서, 글 삭제 링크를 클릭하면 Delete.aspx?n=글번호 식으로 Delete.aspx 를 호출하도록 하였으니, 비밀번호를 입력한후 Request.QueryString["n"] 값에 해당하는 글의 비밀번호와 일치하는지 확인하고, 일치하면 글을 삭제하도록 하면 되겠습니다.

솔루션 탐색기에서 Delete.aspx 라는 페이지를 추가하고, 글보기 페이지 경우와 마찬가지로 페이지 레이아웃을 FlowLayout으로 바꿉니다.

그리고 도구상자에서 Table 을 가져다 놓고 레이아웃을 잡으면서, Web Forms 란에서 Label, TextBox, Button, RequiredFieldValidator 를 가져다 놓아 다음 그림처럼 만듭니다.

Label 위치에는 비밀번호가 일치하지 않는 경우에 에러 메시지를 출력하려 합니다. TextBox 란은 비밀번호 입력란이고, 버튼은 '삭제' 버튼입니다. 비밀번호를 꼭 입력하도록 하기 위해 RequiredFieldValidator를 썼고요. 각각의 속성을 다음처럼 바꿉니다.
 

컨트롤 (ID) 속성
Label lblMessage Text : 비밀번호를 입력해주세요
TextBox txtPassword TextMode : Password
Button btnDelete Text : 삭제
RequiredFieldValidator (변경안함) ControlToValidate : txtPassword
ErrorMessage : * 비밀번호를 입력해주세요

편집이 끝난 후엔, 실행해서 RequiredFieldValidator 가 잘 작동하는지 확인해보세요.


DB관련 개체 설정

그리고 DB 관련 객체를 추가합니다. 지난 강좌, View.aspx 경우와 거의 같습니다. 도구상자 데이터란에서 SqlConnection 하나, SqlCommand 두개를 끌어다 놓습니다.

SqlConnection은 DB연결을 위한 객체입니다. View.aspx 경우와 똑같이 설정합니다. (Name) 을 dbConnection으로, Dynamic Properties 란 확장, ConnectionString 란의 [...] 버튼을 클릭, '동적 속성' 창에서 '구성 파일의 키에 속성 매핑' 체크박스를 선택해서 dbConnection.ConnectionString 키에 매핑하고, '데이터'란의 ConnectionString에 값이 잘 들어가 있는지 확인합니다.

SqlCommand 는 글을 삭제하기 위한 것입니다. 다음처럼 설정합니다.

  • (Name) : dbCommandDeleteArticle
  • Connection : dbConnection
  • CommandText :
    delete from cstVSBoard where seq=@seq and pwd=@pwd
  • Parameters : 두개 추가
    ParameterName SqlDbType Size
    @seq int (입력안함)
    @pwd VarChar 20


소스 편집

삭제 버튼을 더블 클릭합니다. 소스 보기로 전환되고, btnDelete_Click 이란 이벤트처리 메서드가 추가될겁니다. 그 메서드에 다음과 같은 소스를 추가합니다. 파란색 부분이 추가할 부분입니다.

private void btnDelete_Click(object sender, System.EventArgs e)
{
  if(IsValid) 
  {
    int seq = 0;
    string errMsg="";

    try 
    {
      seq = int.Parse(Request.QueryString["n"]);
    }
    catch(Exception) {}

    if(seq>0)
    {
      dbCommandDeleteArticle.Parameters["@seq"].Value=seq;
      dbCommandDeleteArticle.Parameters["@pwd"].Value=txtPassword.Text;
      dbConnection.Open();
      int rowAffected=dbCommandDeleteArticle.ExecuteNonQuery();
      dbConnection.Close();
      if(rowAffected<1) 
      {
        errMsg="비밀번호가 일치하지 않습니다";
      }
    }
    else 
    {
      errMsg="잘못된 글번호입니다";
    }
    if(errMsg!="") 
    {
      lblMessage.Text="<font color=red><b>"+errMsg+"</b></font>";
    }
    else 
    {
      Response.Redirect("list.aspx");
    }
  }
}

Write.aspx 경우 와 비슷하게, 페이지의 IsValid 속성을 확인해서 정확히 입력한 경우에만 ( 즉, 비밀번호를 입력한 경우에만 ) 소스를 실행하도록 합니다. GET 방식으로 넘어온 글번호( Request.QueryString["n"] )와, 입력한 비밀번호를 파라메터 값으로 해서 dbCommandDeleteArticle 명령객체를 실행합니다. SqlCommand의 ExecuteNonQuery() 메서드는 명령을 실행한 후에, 명령을 통해 바뀐 레코드의 수를 반환합니다. 만약 값이 바뀐 레코드가 없다면 비밀번호가 일치하지 않는 것이라 가정해도 되겠죠. ( 물론, 존재하지 않는 글번호인 경우에도 그럴수 있습니다만, 사용자가 일부러 그러지 않는한 그러한 경우는 잘 일어나지 않을 겁니다 )

이제 글 삭제 페이지가 완성되었습니다. 실행해서, 글목록에서 아무 글을 선택해서 글을 확인(View.aspx) 하신 후, 아래 왼쪽에 있는 삭제 링크를 클릭하면 글 삭제 페이지가 실행됩니다. 비밀번호를 입력해서 삭제해 보세요.

위 그림은 비밀번호를 아무렇게나 입력한 화면입니다. 비밀번호가 일치하지 않는다는 메시지가 출력됩니다. 비밀번호가 일치하면 글이 삭제되고, 목록 페이지(List.aspx)로 이동합니다.

다음 강좌에선 첫강좌에 만들었던 Write.aspx 페이지를 일부 수정해서 글을 수정하는 페이지를 구현하도록 하겠습니다.


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})