Updatepanel Repeater Causes Full Postback

Selamlar,

Bu aralar msdn forumuna vakit ayırıp orada cevap vermeye çalışıyorum. İlginç bir soru ile karşılaştım.

Updatepanel içerisinde kullanılan kontroller full postback yapıyor diye yazıyordu.

Biraz inceledikten sonra ve kendim bir yaptığımda gerçekten full postback yaptığını gördüm.

Google olmasa idi ne yapardık :) Arama ile bir kaç örneğe raslatım. Çoğu kişi aynı dertten muzdaripmiş

meğersem. Ama onlardaki çözüm kolay olmuş repeater içerisinde kullandıkları

linkbuttonlara id vererek çözüme ulaşmışlar.

Benim örneğimde ise linkbuttonların zaten idleri vardı. Aklıma repeater bind

ettikten sonra scriptmanagera kontrolleri tek tek RegisterAsyncPostBackControl metodunu

kullanarak register ettim ve sorun çözüldü. Aşağıda bunla ilgili örneğin kod kısımlarını bulabilirsiniz.

<asp:ToolkitScriptManager ID=”ToolkitScriptManager1″ runat=”server”>

</asp:ToolkitScriptManager>

<asp:UpdatePanel runat=”server” ID=”pnlUpdate” ChildrenAsTriggers=”true”>

<ContentTemplate>

<asp:Repeater ID=”rpt” runat=”server”>

<ItemTemplate>

<table>

<tr>

<td>

<%#Eval(“Ad”) %>

</td>

 

<td>

<asp:LinkButton ID=”btnDelete” runat=”server” CommandName=”Delete” Text=”Kaldır” />

</td>

</tr>

</table>

<asp:ConfirmButtonExtender ID=”cnfrmButtonDelete” runat=”server” DisplayModalPopupID=”mdlPopupDelete”

ConfirmText=”Silmek istediğinize emin misiniz?” Enabled=”true” TargetControlID=”btnDelete”>

</asp:ConfirmButtonExtender>

<asp:ModalPopupExtender ID=”mdlPopupDelete” runat=”server” Enabled=”true” TargetControlID=”btnDelete”

OkControlID=”btnYesDelete” CancelControlID=”btnNoDelete” PopupControlID=”divPopupDelete”>

</asp:ModalPopupExtender>

<asp:Panel ID=”divPopupDelete” runat=”server” CssClass=”mdlPopupContainer”>

Silmek istediğinize emin misiniz?

<asp:LinkButton ID=”btnYesDelete” runat=”server” Text=”Evet” />

<asp:LinkButton ID=”btnNoDelete” runat=”server” Text=”Kapat” />

</asp:Panel>

</ItemTemplate>

</asp:Repeater>

</ContentTemplate>

</asp:UpdatePanel>

Yukarıda sayfanın içerisinde yer alan bir updatepanel içerisindeki repeater ve onun içerisinde duran diğer kontrollerimiz var.

btnDelete basıldığında kontrol amaçlı olarak confirmbuttonextender kullanıldığını göreceksiniz.

Arakda tarafta yaptığımız işlemde aşağıdaki gibidir.

 

 

 

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

BindRep();

}

}

 

private void BindRep()

{

List<Person> list = new List<Person>();

for (int i = 0; i < 29; i++)

{

list.Add(new Person() { Ad = (i + ” ” + (i * 5)) });

}

rpt.DataSource = list;

rpt.DataBind();

foreach (RepeaterItem ri in rpt.Items)

{

if (ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem)

{

LinkButton lb = (LinkButton)ri.FindControl(“btnDelete”);

ToolkitScriptManager1.RegisterAsyncPostBackControl(lb);

}

}

 

}

 

}

 

public class Person

{

public string Ad { get; set; }

}

Umarım işinizi görür.

 

Bol Kodlu Günlere :)

 

One thought on “Updatepanel Repeater Causes Full Postback

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>