IT_Programming/ASP.NET (WEB)

RaisePostBackEvent Method Override !

JJun ™ 2009. 12. 28. 23:36

__doPostBack()의 두번째 인자... RaisePostBackEvent 

들어오는 포스트백 이벤트를 처리하도록 포스트백을 발생시킨 서버 컨트롤에 알리는 역활을 합니다.

<MSDN 참조>

 

 

private string _eventArgs;        
protected override void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument)
{
    this._eventArgs = eventArgument;
    base.RaisePostBackEvent(sourceControl, eventArgument);
}

 

protected void Button1_Click(object sender, EventArgs e)
{
    this.label1.Text = this._eventArgs.ToString();
}

 

// HTML

<asp:Label ID="label1" runat="Server" Text="라벨입니다." />
<a href="javascript:funcTest();">테스트 스크립</a>

<asp:Button ID="Button1" runat="server" Text="Button" onClick="Button1_Click" />

 

<script type="text/javascript">
//<![CDATA[
function funcTest()
{
    __doPostBack("Button1","__dopost");
}
//]]>
</script>

 

코드비하인드 부분에서 _eventArgs라는 전역변수를 선언후 RaisePostBackEvent를 통해 들어온

eventArgument값을 전달하고, 발생된 버튼 클릭 이벤트처리 부분에서 전역변수 _eventArgs의 값을

가져다 사용하면 됩니다. EnableEventValidationFalse로 설정해야 정상으로 작동합니다.

 

 

번외편>>

 

이밖에<슈퍼꽁수> Button의 CommandArgument, CommandName을 사용해서 값을 넘길(?)수도 있습니다.

 

// HTML

<asp:Button ID="Button1" runat="server" Text="Button" onClick="Button1_Click" CommandArgument="CommandArg" CommandName="CommandName" />

사용하려는 버튼에 CommandArgument/CommandName 원하는 값을 설정합니다.

 

// 코드 비하인드

protected void Button1_Click(object sender, EventArgs e)
{
    string strArgument = ((System.Web.UI.WebControls.Button)(sender)).CommandArgument;

    string strCommandName = ((System.Web.UI.WebControls.Button)(sender)).CommandName;

}

 


 

출처: 酸素木.NET http://o2tree.tistory.com