다음을 통해 공유


UpdatePanel.UpdateMode 속성

정의

UpdatePanel 컨트롤의 내용이 업데이트되는 시점을 나타내는 값을 가져오거나 설정합니다.

public:
 property System::Web::UI::UpdatePanelUpdateMode UpdateMode { System::Web::UI::UpdatePanelUpdateMode get(); void set(System::Web::UI::UpdatePanelUpdateMode value); };
public System.Web.UI.UpdatePanelUpdateMode UpdateMode { get; set; }
member this.UpdateMode : System.Web.UI.UpdatePanelUpdateMode with get, set
Public Property UpdateMode As UpdatePanelUpdateMode

속성 값

UpdatePanelUpdateMode

UpdatePanelUpdateMode 값 중 하나입니다. 기본값은 Always입니다.

예외

지정된 형식이 UpdatePanelUpdateMode 값 중 하나가 아닌 경우

예제

다음 예제에서는 두 개의 선언 UpdatePanel 컨트롤입니다. 첫 번째 패널에서 속성이 UpdateMode .로 Conditional설정됩니다. 두 번째 패널 UpdateMode 에서 .로 설정됩니다 Always. 두 패널 외부의 단추는 컨트롤의 ScriptManager 메서드를 호출 RegisterAsyncPostBackControl 하여 비동기 포스트백 컨트롤로 등록됩니다. 단추의 Click 이벤트 처리기 Update 에서 마지막 업데이트 이후 5초 이상 경과한 경우 첫 번째 패널의 메서드가 호출됩니다. 이 시나리오에서는 마지막 패널 새로 고침이 5초 이상 전에 있었던 경우에만 패널의 콘텐츠가 업데이트됩니다. 두 번째 패널의 콘텐츠는 항상 업데이트됩니다.


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    protected DateTime LastUpdate
    {
        get
        {
            return (DateTime)(ViewState["LastUpdate"] ?? DateTime.Now);
        }
        set
        {
            ViewState["LastUpdate"] = value;
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (LastUpdate.AddSeconds(5.0) < DateTime.Now)
        {
            UpdatePanel1.Update();
            LastUpdate = DateTime.Now;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {

        ScriptManager1.RegisterAsyncPostBackControl(Button1);   
        if (!IsPostBack)
        {
            LastUpdate = DateTime.Now;
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>UpdatePanelUpdateMode Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1"
                               runat="server" />
            <asp:Panel ID="Panel1"
                       GroupingText="UpdatePanel1"
                       runat="server">
                <asp:UpdatePanel ID="UpdatePanel1"
                                 UpdateMode="Conditional"
                                 runat="server">
                    <ContentTemplate>
                        <p>
                            The content in this UpdatePanel only refreshes if five or more
                            seconds have passed since the last refresh and the button in
                            UpdatePanel2 was clicked. The time is checked
                            server-side and the UpdatePanel.Update() method is called. Last
                            updated: <strong>
                                <%= LastUpdate.ToString() %>
                            </strong>
                        </p>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </asp:Panel>
            <asp:Panel ID="Panel2"
                       GroupingText="UpdatePanel2"
                       runat="server">
                <asp:UpdatePanel ID="UpdatePanel2"
                                 runat="server">
                    <ContentTemplate>
                        <p>
                            This UpdatePanel always refreshes if the button is clicked.
                            Last updated: <strong>
                                <%= DateTime.Now.ToString() %>
                            </strong>
                        </p>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </asp:Panel>
            <asp:Button ID="Button1" Text="Button1" runat="server" OnClick="Button1_Click" />
        </div>
    </form>
</body>
</html>

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected Property LastUpdate() As DateTime
        Get
            If ViewState("LastUpdate") IsNot Nothing Then
                Return ViewState("LastUpdate")
            Else : Return DateTime.Now()
            End If
        End Get
        Set(ByVal Value As DateTime)
            ViewState("LastUpdate") = Value
        End Set
    End Property

    Protected Sub Button1_Click(ByVal Sender As Object, ByVal E As EventArgs)
        If (LastUpdate.AddSeconds(5.0) < DateTime.Now) Then
            UpdatePanel1.Update()
            LastUpdate = DateTime.Now
        End If
    End Sub

    Protected Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs)
        ScriptManager1.RegisterAsyncPostBackControl(Button1)
        If Not IsPostBack Then
            LastUpdate = DateTime.Now
        End If
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>UpdatePanelUpdateMode Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1"
                               runat="server" />
            <asp:Panel ID="Panel1"
                       GroupingText="UpdatePanel1"
                       runat="server">
                <asp:UpdatePanel ID="UpdatePanel1"
                                   runat="server"
                                   UpdateMode="Conditional">
                    <ContentTemplate>
                        <p>
                            The content in this UpdatePanel only refreshes if five or more
                            seconds have passed since the last refresh and the button in
                            UpdatePanel2 was clicked. The time is checked
                            server-side and the UpdatePanel.Update() method is called. Last
                            updated: <strong>
                                <%= LastUpdate.ToString() %>
                            </strong>
                        </p>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </asp:Panel>
            <asp:Panel ID="Panel2"
                       GroupingText="UpdatePanel2"
                       runat="server">
                <asp:UpdatePanel ID="UpdatePanel2"
                                 runat="server">
                    <ContentTemplate>
                        <p>
                            This UpdatePanel always refreshes if the button is clicked.
                            Last updated: <strong>
                                <%= DateTime.Now.ToString() %>
                            </strong>
                        </p>
                    </ContentTemplate>
                </asp:UpdatePanel>
            </asp:Panel>
            <asp:Button ID="Button1" Text="Button1" runat="server" OnClick="Button1_Click" />
        </div>
    </form>
</body>
</html>

설명

UpdatePanel 컨트롤이 다른 UpdatePanel 컨트롤 안에 없는 경우 패널이 트리거 컬렉션과 함께 속성 및 ChildrenAsTriggers 설정 UpdateMode 에 따라 결정되는 대로 업데이트됩니다. UpdatePanel 컨트롤이 다른 UpdatePanel 컨트롤 내에 있으면 부모 패널이 업데이트되면 자식 패널이 자동으로 업데이트됩니다.

컨트롤의 UpdatePanel 콘텐츠는 다음과 같은 상황에서 업데이트됩니다.

  • 속성이 UpdateMode 설정된 AlwaysUpdatePanel 경우 컨트롤의 콘텐츠는 페이지의 어디에서나 시작되는 모든 포스트백에서 업데이트됩니다. 여기에는 다른 UpdatePanel 컨트롤 내 컨트롤의 비동기 포스트백과 컨트롤 내부에 UpdatePanel 없는 컨트롤의 포스트백이 포함됩니다.

  • 컨트롤이 UpdatePanel 다른 UpdatePanel 컨트롤 내에 중첩되고 부모 업데이트 패널이 업데이트되는 경우

  • 속성이 UpdateMode 설정된 Conditional경우 다음 조건 중 하나가 발생합니다.

    • 컨트롤의 메서드를 Update UpdatePanel 명시적으로 호출합니다.

    • 포스트백은 컨트롤의 속성을 사용하여 트리거로 정의된 컨트롤에 Triggers 의해 발생합니다 UpdatePanel . 이 시나리오에서 컨트롤은 패널 콘텐츠의 업데이트를 명시적으로 트리거합니다. 컨트롤은 트리거를 정의하는 컨트롤 내부 또는 외부 UpdatePanel 에 있을 수 있습니다.

    • 속성이 ChildrenAsTriggers 설정 true 되고 컨트롤의 자식 컨트롤이 UpdatePanel 포스트백을 발생합니다. 중첩된 컨트롤의 자식 컨트롤은 UpdatePanel 트리거로 명시적으로 정의되지 않는 한 외부 UpdatePanel 컨트롤에 대한 업데이트를 발생시키지 않습니다.

적용 대상

추가 정보