관리 메뉴

IT 쟁이

회원가입페이지 작성하기 4 - 우편번호 검색하기 -2 본문

ASP.NET Ex

회원가입페이지 작성하기 4 - 우편번호 검색하기 -2

클라인STR 2008. 1. 17. 20:55

어제에 이어서 우편번호 검색하기에 대한 내용을 다루고자 합니다. 우선 코드를 좀 수정했습니다.

private void Ima_post_Click(object sender, System.Web.UI.ImageClickEventArgs e)
  {
   
   this.PostList1.Items.Clear();
   bool flag=false;
   string Connection=ConfigurationSettings.AppSettings["Key"];
   SqlConnection con = new SqlConnection(Connection);
   try
   {
    con.Open();
    SqlCommand command = new SqlCommand("select zipcode,sido,gugun,dong ,bunji  from zipcode where DONG=@dong",con);
    SqlParameter sp = new SqlParameter("@dong",SqlDbType.VarChar,52);
    sp.Value=input_post.Value;
    command.Parameters.Add(sp);
   
    SqlDataReader myreader = command.ExecuteReader(CommandBehavior.CloseConnection);
    while(myreader.Read())
    {
     flag=true;
     string post = myreader[0].ToString() +" "+myreader[1].ToString()+" "+myreader[2].ToString()+" "+myreader[3].ToString();
     ListItem list = new ListItem(post,myreader[0].ToString() +"/"+myreader[1].ToString()+" "+myreader[2].ToString()+" "+myreader[3].ToString() );
     PostList1.Items.Add(list);
    }
    if(flag==false)
    {
     
     ListItem error = new ListItem("해당하는 주소를 찾을 수 없습니다.");
     PostList1.Items.Add(error);
    }
   
 
   }
   catch(Exception)
   {
//    RegisterClientScriptBlock("Pscript","<script>alert(에러)</script>");
    ListItem error = new ListItem("해당하는 주소를 찾을 수 없습니다.");
    PostList1.Items.Add(error);
   }
   finally
   {
    con.Close();
   }
}  



코드부분의 수정한 이유는 -_- 실행을 몇번해 보니 뭐가 좀 이상하더군요. 일단 검색어가 잘못입력됬을 경우에
처리를 해주지 않았습니다. 그리고 첫번째 반지동이란 주소를 입력했을때 또다른 봉림동이란 주소를 입력했을 경우에는 반지동의 데이터와 봉림동의 데이터가 같이 나오게 됩니다. 자세한 생략은 생략합니다. -_- 다아실거라고.



사용자 삽입 이미지

이제 우편번호의 검색도 끝났습니다. 닫기 버튼을 눌렀을때 검색된 우편번호의 값을 부모창에 돌려줘야 됩니다.
닫기번튼이벤트에 대한 비하인드 코드를 보면

private void btn_close_Click(object sender, System.Web.UI.ImageClickEventArgs e)
  {
   
   
   ListItem blist = PostList1.SelectedItem;
   string [] post =blist.Value.Split('/');
   
   RegisterStartupScript("script1","<script>opener.SetAddress('"+post[0]+"','"+post[1]+"')</script>");
   

  }
현재 리스트에 선택된 ListItme 항목을 가져옵니다. 값에 해당하는 항목은 우편번호와 주소를 "/"로 구분해서 들어가 있습니다. 이를 문자열을 파싱해서 나눕니다.  RegisterStartupScript()메서드를 통해서 자바스크립트함수를 호출합니다.
이때 부모창에 는 SetAddress()라는 스크립트 함수가 존재해야합니다. 매개변수로는 post[0], post[1] 값을  줍니다.


SetAddress() 메서드에 대해서 알아볼까요.

 function SetAddress(num,addr)
  {

    var aNum = num.split('-');

   
    document.getElementById('postNum1').value=aNum[0];

    document.getElementById('postNum2').value=aNum[1];

    document.getElementById('postAddr').value=addr;
   
    objFinder.close();

  }


num 에는 우편번호 주소값인데 "-" 기분으로 앞의 주소와 뒤의 주소를 구분하기 위해서 split()함수를 사용합니다.

나머지는 해당 컨트롤에 값의 대입합니다.  마지막에 Close()함수인데 저 함수는 우편번호 검색팝업창을 닫기 위해 사용됩니다. 밑에 코드를 보면 왜그런지 아실듯 하네요..
objFinder=window.open("Postsearch.aspx","", "width=370, height=380, status=0, menubar=0");


사용자 삽입 이미지


그림 - 정상적으로 실행된 경우

이것으로 회원가입에 대한 간략한 포스팅을 마치도록 하겠습니다. -_- 혹시 에러나 잘못된 점 있으면 코멘트 달아주시면 도움이 될것 같아요 (__)(--) 좋은 밤되세요.
Comments