簡體   English   中英

從另一個控件中的控件刷新asp.net頁面

[英]Refreshing an asp.net page from a control in another control

我想在有人點擊“添加”按鈕后刷新我的asp.net頁面。 但是,“添加”按鈕是另一個用戶控件內部的用戶控件的一部分,並且子控件和父控件都包含在更新面板中:下面的代碼被縮短顯示,這是用戶控件在另一個用戶控件內部的原因

內部第一控制:

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

然后在control2里面

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

如果要重新加載整個頁面(而不僅僅是UpdatePanels的內容),您可以執行以下操作:

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

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

btnAddButton.OnClick += new EventHandler(MethodThatRefreshesPage);

由於您處於更新面板中,因此需要執行Response.Redirect(Request.RawUrl)來刷新整個頁面。

當然,如果您確實可以控制父用戶控件,則可以創建自己的“AddClicked”事件並將訂閱傳遞給鏈接按鈕。或者您可以將LinkBut​​ton本身公開為用戶控件上的公共屬性。

我假設您要刷新頁面,以便在頁面中顯示新添加的項目...正確嗎? 如果是這樣,那么您可以將數據控件數據綁定為AddButton_Click事件的一部分。 例如,如果您有一個顯示項目的網格,那么用戶單擊Add按鈕添加一個新項目,您可以將以下代碼放入AddButton_Click事件中以“刷新”數據控件的內容並顯示新添加的內容項目:

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

希望這可以幫助。

事件冒泡怎么樣( http://odetocode.com/code/94.aspx )?

您沒有指定腳本管理器的配置,但假設您配置了腳本管理器,如下所示:

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

然后將此Trigger添加到Control2的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>

這將觸發一個PostBack,它允許您重新加載任何綁定數據(在Page_Load中),並且還將重新呈現整個頁面而不僅僅是內部更新面板的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM