WebForm 개발시 UpdatePanel을 자주 사용하게 된다.


클라이언트(브라우저)딴에서 UpdatePanel을 이용하여 동적으로 화면을 그릴 경우 Load되는 타이밍을 잡아 이벤트바인딩, 데이터바인딩 등의 작업을 해야할 경우가 있다.

이때 Sys.Application을 사용하여 이벤트를 잡을 수 있다.


Sys.Application란, ASP.NET WebForm에서 클라이언트딴의 이벤트를 제어할 수 있도록 제공하는 클라이언트딴 클래스이다.

해당 클래스를 이용하여 Load 이벤트를 잡아보자.


* Sys.Application 클래스에는 Load 뿐 아니라 다양한 이벤트들이 존재합니다. 문서 확인 후 응용하시면 됩니다.


사용 예

[클라이언트]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<html>
<head>
    <script>
        function UpdatePanel_LoadEvent() {
            console.log($('#contents').text());
        }
    </script>
</head>
<body>
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <script>
                // Sys.Application 클래스를 이용하여 이벤트 등록
                Sys.Application.add_load(UpdatePanel_LoadEvent);
            </script>
            <asp:Label ID="contents" ClientIDMode="Static" runat="server" Text="내용입니다."></asp:Label>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Button_Submit" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
 
    <asp:Button ID="Button_Submit" runat="server" OnClick="Button_Submit_Click" Text="리로드" />
</body>
</html>
cs


[비하인드]

1
2
3
4
5
6
7
8
9
10
11
12
public partial class LoadEventTest : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        
    }
 
    protected void Button_Submit_Click(object sender, EventArgs e)
    {
        contents.Text = "리로드되었나요?";
    }
}
cs


[참조]

https://docs.microsoft.com/ko-kr/dotnet/api/system.web.ui.updatepanel?view=netframework-4.7.2

https://docs.microsoft.com/en-us/previous-versions/bb383829%28v%3dvs.100%29

+ Recent posts