2010-01-26 11 views
6

Birisi "Ekle" düğmesini tıklattıktan sonra asp.net sayfamı yenilemek istiyorum. Bununla birlikte, "Ekle" düğmesi, başka bir kullanıcı denetiminde kullanıcı denetiminin bir parçasıdır ve alt denetim ve ana denetim her ikisi de Güncelleştirme Panellerine sarılır: Aşağıdaki kod, ekran için kısaltılır, kullanıcı denetimi başka bir kullanıcı denetiminin içinde olmak için bir neden vardırBaşka bir denetimdeki bir denetimden asp.net sayfasını yenileme

iç ilk kontrolü: CONTROL2 içeride Sonra

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

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

Benzer şekilde, UserControl içinde bir AddCoc w/onclick olayı olan bir UserControl'üm vardı (bu benim db'ye bir kayıt ekledi). Bir kez Ekle düğmesine tıkladıktan sonra tarayıcı yenileme düğmesine tıkladıktan sonra tarayıcı, formu yeniden gönderecek, repostu kabul ederek önceki Add olayını tekrar ekleyecektir ve bu da reklama çift ekleme işlemi ekleyecektir. Response.Redirect (ana sayfa) sorunu çözdü. @keltex'ten gelen cevaba bakınız. – condiosluzverde

cevap

5

sen yapabileceğiniz sayfanın tamamını (ve UpdatePanels sadece içeriği) yeniden yüklemek istiyorsanız:

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

Sayfa dinamik olarak üretildi. Response.Redirect (Page.Url) veya bir şey gibi bir şey yapabilir miyim. – user204588

+1

Evet. Bu muhtemelen işe yarar. Response.Redirect (Page.Request.Url. – Keltex

1

Üst kullanıcı denetimi üzerinde bir kontrolünüz bulunmadığı farz edilerek, üst kullanıcı denetiminin (FindControl) alt denetiminde arama yaparak denetimi bulabilirsiniz. Eğer güncelleme panelleri olduğumuza

btnAddButton.OnClick += new EventHandler(MethodThatRefreshesPage); 

, tüm sayfayı yenilemek için Response.Redirect(Request.RawUrl) böyle bir şey yapmak gerekir: bunun başvurusunu yerleştirdikten sonra da bir olay işleyicisi ekleyebilir.

Tabii ki, ana kullanıcı denetimi üzerinde denetiminiz varsa, kendi "AddClicked" olayınızı yaratırsınız ve aboneliklerinizi bağlantı düğmesine geçirirsiniz. Ancak, LinkButton'un kendisini herkese açık bir özellik olarak gösterebilirsiniz. kullanıcı kontrolü.

0

Yeni eklenen öğenin sayfada gösterilmesi için sayfayı yenilemek istediğiniz varsayılıyor ... doğru mu? öyleyse, veri kontrolünüzü AddButton_Click olayının parçası olarak düzenleyebilirsiniz. Örneğin, öğelerin gösterildiği bir ızgara varsa, bir kullanıcı yeni bir öğe eklemek için Ekle düğmesini tıklatırsa, veri denetiminin içeriğini "yenilemek" ve yeni eklenenleri görüntülemek için aşağıdaki kodu AddButton_Click olayına ekleyebilirsiniz. madde:

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

Bu yardımcı olur umarım.

0

Etkinlik köpüren nedir (http://odetocode.com/code/94.aspx)? aşağıdaki gibi görünüyor böylece

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

Sonra CONTROL2 için UpdatePanel şablonuna bu Trigger ekleyin:

0

Bununla birlikte aşağıdaki gibi bir komut dosyası Yöneticisi yapılandırılmış varsayarsak, Senaryo Yöneticisi yapılandırmasını belirtilmez:

<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> 

Bu (Page_Load) Varsa bağlanmış verileri yeniden sağlayacak ve aynı zamanda tüm sayfayı ve iç güncelleme panelin sadece içeriğini yeniden oluşturacak bir geri gönderme tetikleyecektir.