2009-10-06 25 views
6

我似乎沒有與他們的問題結束。如何正確使用UpdatePanel? (asp.net)

我有。我檢查他們一些複選框的更新面板,並擊中了我的保存按鈕,但它會導致更新面板回發(刷新),並將他們全部回到空白。重新繪製方法在按鈕代碼之前運行。

什麼是與該複選框,你可以操縱一個UpdatePanel正確的方法是什麼?

編輯:我想這個問題可能是一個基本的設計之一。我真的需要一個關於如何正確使用updatepanel的完整教程。

+0

我想更新面板用於更新該面板下的內容,而不是重新加載整個頁面e ... – 2013-10-11 14:20:23

回答

10

例子:

<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="updatePanel1"> 
    <ContentTemplate> 
     <asp:CheckBox runat="server" ID="myCheckBox" Caption="CheckBox"/> 
     <asp:Button runat="server" ID="saveButton" 
        Caption="Save" OnClick="SaveButtonClick"/> 
    </ContentTemplate>  
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="saveButton" EventName="Click" />   
    </Triggers> 
</asp:UpdatePanel> 

確保:

  1. 的UpdatePanel的的UpdateMode是有條件
  2. SaveButton包含在觸發器節作爲控件ID AsyncPostBackTrigger
+0

我認爲有條件的事情可能會導致它。我想我現在可以解決它,謝謝。 – NibblyPig 2009-10-06 12:23:48

+0

Microsoft JScript運行時錯誤:Sys.WebForms.PageRequestManagerServerErrorException:無效的回發或回調參數。使用配置中的或頁面中的<%@ Page EnableEventValidation =「true」%>啓用事件驗證。爲了安全起見,此功能驗證回發或回調事件的參數來自最初呈現它們的服務器控件。如果數據有效且預期,請使用ClientScriptManager.RegisterForEventValidation方法爲註冊回發或回調數據進行驗證。 – NibblyPig 2009-10-06 12:26:27

+0

嗯......這很奇怪。你能寫你的ScriptManager的描述嗎? – AndreyAkinshin 2009-10-06 12:41:41

2

請確保更新面板中的保存按鈕位於更新面板的<Triggers>部分中,如果不是,則指定爲更新面板的觸發器。

<asp:UpdatePanel ID="MyControlPanel" runat="server" UpdateMode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="SaveButton" /> 
    </Triggers> 
    <ContentTemplate> ... 

你能告訴你的UpdatePanel一些代碼?

3

你的代碼應該看起來像

if(!page.ispostback) 
{ 
    re-drawing(); 
} 

正如當你點擊保存按鈕叫你再拉深()方法,它再次刷新複選框。異步回發的行爲,並擊中頁面方法同樣喜歡完全回發,但會刷新在UpdatePanel的價值。如果你使用服務器控件來渲染複選框,你應該EnableViewState="true"屬性添加到這些控件和更新面板

還要檢查這個網址 http://ajax.net-tutorials.com/controls/updatepanel-control/

+0

這很有道理,但它似乎自動清除面板。如果我把「如果(條件)返回」;作爲我的更新面板onload方法的第一行,它最終將其擦除。 – NibblyPig 2009-10-06 12:14:15

+0

顯示你的代碼..... – 2009-10-06 12:15:38

0

如果不在服務器控件的複選框,然後從更新面板中刪除,包括裏面唯一的服務器控件。這導致在頁面上保留多個更新面板通常不是一個大問題。

0

添加一個ScriptManager對象到你的頁面,如果你沒有一個。設置EnablePartialRendering =「true」。把你的UpdatePanel放在頁面的任何地方,並把你想要的內容放在你的UpdatePanel標籤中。代碼