첫번째 프레임 페이지 입니다. <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>
|