UpdatePanel이 전체 ​​페이지 포스트 백을 일으키지 않도록하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/728043

문제

Community Server 2008 프레임 워크 내부에서 .NET 3.5를 사용하고 페이지를 구축하고 있습니다.

페이지 중 하나에서 업데이트 패널이 작동하려고합니다.

Asp.net 웹 사이트에서 바로 샘플을 가져 왔습니다. 버튼을 클릭하여 현재 시간으로 업데이트 패널의 시간을 업데이트하고 그러나 어떤 이유로 든 기능을 수행하려고 할 때 전체 페이지가 새로 고침됩니다.

다음은 다음과 같습니다.

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = "Panel refreshed at " + DateTime.Now.ToString();
    Label2.Text = "Panel refreshed at " + DateTime.Now.ToString();
}
<asp:ScriptManager ID="ScriptManager1" runat="server"/>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <fieldset>
            <legend>UpdatePanel</legend>
            <asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label><br />
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
        </fieldset>
    </ContentTemplate>
</asp:UpdatePanel>

버튼을 클릭 할 때마다 패널이 업데이트되지만 전체 페이지가 다시 게시됩니다! 전체 페이지가 깜박일 수 있습니다. 내가 뭘 잘못하고있는거야?

나는 중첩 된 마스터 페이지 안에 있지만 이것이 문제인지 확실하지 않습니다. 이 커뮤니티 서버 프레임 워크에는 모든 이벤트가 게시되게하는 것이있을 수 있습니까?

도움이 되었습니까?

해결책

설정 해보 셨나요? Button1 로서 AsyncPostBackTrigger 트리거 섹션에서? 설정 ChildrenAsTriggers 속성 true 그리고 UpdateMode 속성 Conditional.

protected void Button1_Click(object sender, EventArgs e)
{    
    Label1.Text = "Panel refreshed at " + DateTime.Now.ToString();    
    UpdatePanel1.Update();
}    
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
    <Triggers>        
        <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />    
    </Triggers>    
    <ContentTemplate>        
        <fieldset>            
            <legend>UpdatePanel</legend>            
            <asp:Label ID="Label1" runat="server" Text="Panel created."></asp:Label><br />            
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />        
        </fieldset>    
    </ContentTemplate>
</asp:UpdatePanel>

다른 팁

위의 코드 샘플에서 Label2가 보이지 않습니다. Label2가 UpdatePanel 외부에있는 경우 페이지가 Label2를 올바르게 업데이트하는 데 필요한 것이기 때문에 전체 페이지 새로 고침이 발생합니다.

기본적으로 UpdatePanels는 내부의 컨트롤에 의해 트리거 될 때만 콘텐츠를 동적으로 새로 고침합니다. 더 멋진 업데이트를 수행 해야하는 경우 패널 외부의 버튼을 말하면 다른 패널의 새로 고침 또는 레이블을 업데이트 할 수 있습니다. 그러면 UpdatePanel (S)에서 조건부 속성을 설정하고 수동 업데이트 호출을해야합니다. 코드에서.

또 다른 가능한 이유는 페이지가 있다면 ClientIDMode="static", 그런 다음 업데이트 패널 만 새로 고침 할 것으로 예상되는 컨트롤은 전체 페이지를 새로 고칩니다.

문제를 해결하려면 ClientIDMode="AutoID" updatepanel 게시물을 다시 트리거 해야하는 컨트롤에서.

세트 ChildrenAsTriggers="true" 업데이트 패널 컨트롤에서.

"기본적으로 UpdatePanels는 내부의 컨트롤에 의해 트리거 될 때만 콘텐츠를 동적으로 새로 고치게합니다."

그렇지 않으면 전체 페이지가 새로 고침됩니다! 그게 요점!

.NET Framework v1.1에서 업그레이드 된 이전 프로젝트가있는 경우 웹 구성 에서이 라인을 제거하여 작동하도록합니다.

<xhtmlConformance mode="Legacy"/>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top