Merhaba Arkadaşlar,
Bu sorun muhtemelen bir çok arkadaşın karşılaştığı sorunlardan bir tanesi. Bunun çözümü aslında basit. ScriptManager’a asenkron postback kontrolümüzü register etmemiz gerekmekte. Ama Öncelikle sizlere kendi kodlarımdan örnekler göstererek pekiştirmeye çalışayım.
1 2 3 4 5 6 7 8 9 10 11 12 |
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <asp:UpdatePanel runat="server"> <ContentTemplate> <asp:Repeater runat="server" ID="Repeater_Talepler" OnItemDataBound="Repeater_Talepler_ItemDataBound" OnItemCreated="Repeater_Talepler_ItemCreated"> <ItemTemplate> <div class="main_body"> <div class="top_buttons"> <asp:Button ID="Button_UyeBilgileri" runat="server" Text="Üye Bilgileri" OnClick="Button_UyeBilgileri_Click" /> </div> <asp:Literal runat="server" ID="Literal_Script"></asp:Literal> </ContentTemplate> </asp:UpdatePanel> |
Koddaki gereksiz satırları sildim daha kolay anlayabilmeniz için. Öncelikle görebildiğiniz üzere Button_UyeBilgileri adlı bir butonumuz var ve bunu UpdatePanel içerisinde Triggers’a eklediğimizde hata ile karşılaşacağız. Bunun nedeni Repeater içerisindeki kontrollerin design time’da oluşturulmamasıdır. Bunu çözmek için repeater’ın OnItemCreated olayınıkullanacağız ve metod içerisine aşağıdakileri yazacağız:
1 2 3 4 5 6 7 |
ScriptManager scriptMan = ScriptManager.GetCurrent(this); Button btn = e.Item.FindControl("Button_UyeBilgileri") as Button; if (btn != null) { btn.Click += Button_UyeBilgileri_Click; scriptMan.RegisterAsyncPostBackControl(btn); } |
Böylelikle kontrolümüzü oluşturur oluşturmaz ScriptManager üzerine register ediyoruz ve sistemin UpdatePanel’in görmesini sağlıyoruz. Hepsi Bu Kadar…
Umarım Faydasını Görürsünüz…
btn.Click += Button_UyeBilgileri_Click;
Kodun bu bölümü hata veriyor