Q & A

시삽: 레드플러스 님 
게시판 이동:
 제목 : Re : 코드중복확인...OTL~
글번호: 538
작성자: hatukoi
작성일: 2007/04/20 오후 2:24:00
조회수: 4068
혹시 틀릴수도 있다는 전제하에...;;저도 실제로 부딪쳐서 알아가는 스타일이라;;
각설하고...

초반에 많이 헷갈리시는 것 중에 하나가 클라이언트와 서버의 이벤트의 혼동입니다.
onblur 이벤트는 클라이언트측 이벤트입니다.그걸 서버측 코드로 잡아낼려고 하니
잡아지지 않을 겁니다.
서버 컨트롤에 onblur=tbRout_Code_TextChanged 이렇게 해놓으시면 랜더링시 그대로
들어갈겁니다.그건 즉 해당 컨트롤에 이벤트를 주는 것이지 그걸 곧 서버측에서 쓸 수있다
는건 아닙니다.이해가 되실런지요.
onblur=tbRout_Code_TextChanged() 이렇게 하시고 자바스크립트로 tbRout_Code_TextChanged() 란 function을 구현하셔야 합니다.
__dopostback이던가요 암튼 그런게 있던 것 같은데 그것까지는 저도 잘 모르겟네요.

onblur를 굳이 쓰고 싶으시면 당장 드는 생각은 페이지 로딩시 히든필드에 디비값을 구분자를 주어 하나의 문자열로 담고 onblur시 자바스크립트로 그 문자열을 구분자로 자른 후
일일이 비교하는 식이 되야 할 것 같네요.

하지만 무척 복잡하겠죠?ajax로 처리가 될거 같긴 하네요.ajax도 잘 모르지만;;
아는게 없군요 그러고 보니 ㅠㅜ

////////////////////////////////////////////////////////////////////////////////////////////////

포커스 이동이 문제인가


포커스 이동시

On 2007-04-20 오후 1:56:00, '박찬일' wrote:
------------------------------------------------------------
>
>
>-- 포커스 이동시 확인..
> <asp:TextBox ID="tbRout_Code" runat="server" onblur="tbRout_Code_TextChanged"></asp:TextBox  >
>
>-- 중복환인...
>
>protected string queryRead = "SELECT Rout_Code From dbo.Prd_Rout_Master where Rout_Code = @Rout_Code";
>
>
>    protected void tbRout_Code_TextChanged(object sender, EventArgs e)
>    {
>
>        DbCommand cmdRead = dbYuJeonSteel.GetSqlStringCommand(queryRead);
>        DataSet dsRead = new DataSet();
>        DataTable dtRead = new DataTable();
>
>        dtRead.Columns.Add("Rout_Code");
>        
>
>        try
>        {
>          
>
>            dsRead = dbYuJeonSteel.ExecuteDataSet(cmdRead);
>        
>
>        }
>        catch (Exception ex)
>        {
>
>            Response.Write(ex.Message);
>        }
>        finally
>        {
>            // idRead.Close();
>        }
>            
>        for (int i = 0; i < dtRead.Columns.Count; i++)
>        {
>            if (tbRout_Code.Text == dsRead.Tables[i].Columns.ToString() )
>            {
>                Response.Write("<script>alert('중복된 코드입니다.\n 확인 후 다시 입력해주세요.')</script>");
>            }
>        }
>    }
>
>
>onblur가 안먹는건지 아님 중복 코드가 잘못된건지 ㅠㅠ
>아 맨땅에 헤딩중...좀 도와주세욤 ㅠㅠ
>중복코드가 완전 틀린건가;;이것저것 짬뽕해서
------------------------------------------------------------

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트
  bluesky0501
  2007-04-20 오후 2:26:35
저도 그생각은 해&#48419;는데
스크립트에서 C# 구문을 불러 오는 방법을 몰라서욤 ㅠㅠ
  bluesky0501
  2007-04-20 오후 2:27:15
C#에서 스크립트 코드를 불러오는 방법은 알고잇는데 로드시 불러오자니 그것도 안돼고;;; 방법이 ㅠㅠ
  bluesky0501
  2007-04-20 오후 2:37:38
신경써주셔서 감사합니다 ㅎㅎ
  hatukoi
  2007-04-20 오후 2:45:17
꼭 onblur시에 validation체크를 해야 하나요?
onblur라는 이벤트에 의해 유효성을 체크 할때 체크할 데이터가 서버측에 있습니다.따라서 서버에 전달해주는 부분이 필요한데 이때 포스트 백이 일어나겠죠.
요즘 유행하는 ajax라면 또 모르겠지만...
포스트백이 있어도 상관없다면 onblur="chkValue()" 라고 하시고
스크립트 단에 chkValue 를 구현하면 됩니다.
chkValue는 location.href=현재페이지?val=tbRout_Code.value
이런식으로 해서 넘겨서 쿼리값으로 중복값체크로직을 수행하시구요.
아이프레임처리해서 깜빡임을 줄이시는것도 한 방법이겠네요.

그게 싫으시면 위에 말씀드린 대로 로드시에 히든필드에다 미리 체크할 값을 전부 구분자로 땡겨오셔야 하구요.

그다지 큰 도움은 못되네요 ㅎㅎ;;
  bluesky0501
  2007-04-20 오후 3:02:38
ㅎㅎ 초짜라..딴 페이지에 이런 소스가 있었네욤
근데 쫌 변형해야돼서 짐 머리싸매고 헤딩하는중
재가 실력이 없어서 알려주시는데도 몰겠네욤 ㅠㅠ
우선은 있는소스 가지고 변형을 ㅋㅋㅋ
  hatukoi
  2007-04-20 오후 5:05:14
다른 페이지에 있었다구요?그럼 그 다른페이지에 텍스트박스(서버컨트롤이엇겟죠?)의 onblur에 매칭된 함수가 자바스크립트 함수인지 찾아보시기 바랍니다.그렇다면 님이 새로 하실려는 것과 기존의 원본의 차이는 명확히 나오는 것이겟죠.
만약 매칭된 함수가 서버측 함수라면 님이 원하는 해결방법이 나올것입니다.님께서 할려는 것도 마찬가지로 서버측 함수를 호출할려는 것이니까요.
  choiyw2
  2007-04-20 오후 6:02:54
방가방가 -0-

한마디루.. 원하는게 텍스트 박스에 글을 쓰시궁 거기에서 포커스나 커서가 떠날때 중복체크를 원하시는거져??

꼭 서버 컨트롤을 써야되구요?

그리고.. 비동기화까지??

서버컨트롤이 아니라 html컨트롤 이라면 위에분 말씀대로 좀 복잡하겠지만

asp.net2.0 기반이라면 ajax를 사용하시면 간단할듯 한데요.

textbox 컨트롤에 autopostback="true" 주시고,
TextChanged 이벤트를 주신다음에.
c# 구문에서 체크하시면서,
updatepanel로 묶어주시면 위에 써있는거 모두다 실행됩니다.

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 저장프로시저에 관해서요~ (5) - 하나 2007-04-20 3374
  코드중복확인...OTL~ (2) - 박찬일 2007-04-20 3199
현재글 Re : 코드중복확인...OTL~(7) - hatukoi 2007-04-20 4068
다음글 대용량 디비를 불러올때... 시간 줄일 수 있는 방법(9) - 여홍석 2007-04-20 3703
 
손님 사용자 Anonymous (손님)
로그인 Home