2010-01-26 41 views
6

我想在有人點擊「添加」按鈕後刷新我的asp.net頁面。但是,「添加」按鈕是另一個用戶控件中的用戶控件的一部分,子控件和父控件都包含在「更新面板」中:下面的代碼僅用於顯示,用戶控件位於另一個用戶控件內部是有原因的從另一個控件中的控件刷新一個asp.net頁面

內第一控制:

<ajax:UpdatePanel ID="Panel1" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
      <uc:Control2 ID="Custom2" runat="server" /> 
    </ContentTemplate> 
</ajax:UpdatePanel> 

內。然後控制2

<ajax:UpdatePanel ID="Panel2" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
      <asp:LinkButton ID="AddButton" runat="server" OnClick="AddButton_Click"</asp:LinkButton> 
    </ContentTemplate> 
</ajax:UpdatePanel> 
+0

同樣,我有一個用戶控件與用戶控件中的添加按鈕w/onclick事件(即向我的數據庫添加了一條記錄)。點擊添加按鈕一次,然後點擊瀏覽器刷新按鈕 - 瀏覽器將重新發布表單,接受重新發布前的添加事件,導致廣告重複添加操作。 Response.Redirect(父頁)解決了這個問題。請參閱@keltex的答案。 – condiosluzverde 2017-12-19 16:22:57

回答

5

如果你想重新加載整個頁面(而不是UpdatePanel的只是內容),你可以這樣做:

Page.Response.Redirect("mypagename.aspx"); 
+0

該頁面是動態生成的。我可以做一些像Response.Redirect(Page.Url)之類的東西嗎? – user204588 2010-01-26 20:13:05

+1

是的。這可能會奏效。的Response.Redirect(Page.Request.Url。AbsolutePath) – Keltex 2010-01-26 21:14:56

1

假設您無法控制父用戶控件,可以通過搜索父控件(FindControl)的子控件來找到該控件。然後,一旦你有提到它,你可以添加事件處理程序:

btnAddButton.OnClick += new EventHandler(MethodThatRefreshesPage); 

既然你在更新面板的時候,你需要做的是這樣Response.Redirect(Request.RawUrl)刷新整個頁面。

當然,如果您確實擁有對父級用戶控件的控制權,那麼您可以創建自己的「AddClicked」事件並將訂閱傳遞給鏈接按鈕..或者您可以將LinkBut​​ton本身公開爲公共屬性用戶控制。

0

我假設你想刷新頁面,以便新增加的項目顯示在頁面中...正確嗎?如果是這樣,那麼您可以將數據綁定數據綁定爲AddButton_Click事件的一部分。例如,如果您的網格顯示項目,則用戶單擊添加按鈕以添加新項目,則可以將以下代碼放入AddButton_Click事件中以「刷新」數據控件的內容並顯示新添加的內容item:

protected void AddButton_Click(object sender, EventArgs e) 
    { 
     myGrid.DataBind(); 
    } 

希望這會有所幫助。

0

你不指定腳本管理器的配置,但是假設你有一個腳本管理器配置如下:

<ajax:ScriptManager runat="server" ID="myScriptManager" EnablePartialRendering="true"></ajax:ScriptManager> 

,然後該觸發器添加爲控制2 UpdatePanel的模板,以便它看起來如下:

<ajax:UpdatePanel ID="Panel2" runat="server" UpdateMode="Always"> 
    <ContentTemplate> 
     <asp:LinkButton ID="AddButton" runat="server" OnClick="AddButton_Click"</asp:LinkButton> 
    </ContentTemplate> 
    <Triggers> 
     <asp:PostBackTrigger ControlID="AddButton" /> 
    </Triggers> 
</ajax:UpdatePanel> 

這將觸發回發,讓你重新加載(在Page_Load中)任何綁定的數據,並且還將重新呈現整個頁面,而不僅僅是你的內心更新面板的內容。

相關問題