본문 바로가기
프로그래밍/ASP

리프레쉬 없이 데이터베이스 내용 가져오기

by 백룡화검 2010. 4. 23.

 첫번째 프레임 페이지 입니다.
<frameset rows='100%,*' cols='*' framespacing='0' frameborder='NO' border='0'>
<frame src='SlideShow.asp?<%IF Trim(request.querystring) = '' Then Response.Write(request.Form) ELSE Response.Write(request.QueryString)%>' name='mainFrame' >
<frame src='about:blank' scrolling='NO' noresize name='hiddenFrame' >
</frameset>

SlideShow.asp라는 파일에서 임의의 이벤트가 발생하면 이 파일의 특정 콤보에 값을 채우는 방법입니다
이 방식을 사용하면 새로고침의 한계를 뛰어 넘을 수 있습니다.

parent.document.frames['hiddenFrame'].document.location='top.asp?mode=CSSpec&ProductCode=' + document.frmSlide.ProductCode.value; 이런 방식으로 숨겨진 프레임 top.asp파일을 호출합니다. 이런식으로 사이트에 hidden 프레임을 만들어 두면 그렇게 멀게만 느껴졌던 디비호출을 마음대로 할 수 있습니다
=>Top.asp만 잘 정의 하면 대부분의 요청을 asp리프레쉬 없이 처리 할 수 있습니다.

// 여기는 Top.asp에 해당하는 내용입니다
mode에 따라서

<script language='javascript>

var TargetDoc= parent.document.frames['mainFrame'].document;
var oOption;
IF Request('mode') = 'CSSpec' THEN
Set adocmd = Server.CreateObject('ADODB.Command')
WITH adocmd
.ActiveConnection = DbConn
.CommandType = adCmdStoredProc
.CommandText = 'IS_CSEnterOrderCounts'
.Parameters.Refresh
.Parameters.Item('@ProductCode').Value= Cint(Request('ProductCode'))
Set RS = .Execute
END WITH
%>
for( key in TargetDoc.frmSlide.CSSpec)
{
TargetDoc.frmSlide.CSSpec.remove(key);
}
<%
Do While Not RS.EOF
%>
oOption = TargetDoc.createElement('OPTION');
oOption.value='<%=Trim(RS('ColorCode')) %>;<%=Trim(RS('SizeCode')) %>';
oOption.text ='<%=Trim(RS('Name') )%>-<%=Trim(RS('Size'))%>';
TargetDoc.frmSlide.CSSpec.add(oOption);
<%
RS.MoveNext
Loop
RS.close()
END IF%>

</script>

 

출처 : http://blog.naver.com/romu/60012903405