자식창에 있는 값을 부모창에 바로 반영하고 싶을 경우
보통 스트립트로 자식창의 값을 부모창에 넘긴다음
부모창의 변경된 내용을 submit시킴으로써 일괄적으로 처리합니다.
하지만 가끔 자식창에서 부모창으로 값을 넘기면서 바로 DB처리를 해야 할 경우가 있을지도 모릅니다. 그럴때 이용하는 방법입니다.
다음은 자식창에서 입력한 텍스트값을 부모창의 링크버튼 이벤트를 이용하여
부모창의 리스트박스에 추가하는 소스로 두가지 방법을 사용해서 만들어 보았습니다.
자세한 내용은 첨부한 소스코드를 참고하세요.
--- 아래는 팝업페이지의 소스코드 일부입니다..
<script language="javascript">
<!--
// __doPostBack에 인지값을 직접 넘기는 방법
function ListBoxAdd1()
{
var strValue = document.all["txtValue"].value;
opener.__doPostBack('lnkEvent1', strValue);
}
// 부모창의 hidden input 으로 넘겨서 받는 방법
function ListBoxAdd2()
{
opener.document.all["hidValue"].value = document.all["txtValue"].value;
opener.__doPostBack('lnkEvent2', '');
}
//-->
</script>
<INPUT type="text" id="txtValue">
<INPUT type="button" value="추가(방법1)" onclick="ListBoxAdd1();">
<INPUT type="button" value="추가(방법2)" onclick="ListBoxAdd2();">
-- 아래는 부모창의 소스코드 일부입니다.
-- 자식창에서 __doPostBack을 사용하시려면 링크버튼을 이용하시는게 편리합니다.
-- 링크버튼을 사용하시면 컴파일후 부모창에 __doPostBack 스크립트 함수를 자동으로 생성해주기 때문이죠.
<aspx>
<asp:ListBox id="ListBox1" runat="server">
<asp:ListItem Value="선택하세요">값을 추가해주세요.</asp:ListItem>
</asp:ListBox>
<asp:LinkButton id="lnkEvent1" runat="server"></asp:LinkButton>
<asp:LinkButton id="lnkEvent2" runat="server"></asp:LinkButton>
<input type="hidden" id="hidValue">
<cs>
// RaisePostBackEvent를 이용해서 인자값 받기
string newValue = null;
protected override void RaisePostBackEvent
(IPostBackEventHandler sourceControl, string eventArgument)
{
newValue = eventArgument;
base.RaisePostBackEvent (sourceControl, eventArgument);
}
private void lnkEvent1_Click(object sender, System.EventArgs e)
{
if(newValue != null)
ListBox1.Items.Add(newValue );
}
// hidden값에 인자값을 넣어서 받기
private void lnkEvent2_Click(object sender, System.EventArgs e)
{
if(Request["hidValue"] != null)
ListBox1.Items.Add(Request["hidValue"]);
}
'.net' 카테고리의 다른 글
IIS 6.0 + ASP.NET 에서 HTTP 압축 사용하기 (0) | 2007.05.03 |
---|---|
웹페이지에서 자바스크립트로 컨트롤 찾기 (0) | 2007.05.03 |
GET방식으로 한글 넘길때 인코딩 문제 (3) | 2007.05.03 |
유저컨트롤에 포함된 컨트롤 제어하기 (0) | 2007.05.03 |
DataSet 엑셀로 다운로드하기 (0) | 2007.05.03 |