OK, ich habe Repeater buchstäblich Hunderte von Malen ohne Probleme verwendet, aber etwas ist heute schief gegangen. Ich habe einen Repeater und abonniere das Ereignis itemCommand, aber wenn mein Befehl ausgeführt wird, sendet die Seite einen Post, aber das Ereignis wird nicht ausgelöst.ASP.Net Repeater Element Befehl wird nicht ausgelöst
Um dies zu umgehen, muss ich meine Datenbindung für jeden Postback machen.
Mein Repeater sieht wie folgt aus:
<asp:Repeater id="MyRepeater" runat="server" onitemcommand="MyRepeater_ItemCommand">
<ItemTemplate>
<li>
<asp:Label id="Label" runat="server" />
<asp:LinkButton id="LinkButton1" runat="server" commandname="Complete" commandargument='<%# Eval("MyID") %>' text='<%# Eval("Title") %>' />
</li>
</ItemTemplate>
</asp:Repeater>
und mein Code-Behind wie folgt aus:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SetupPage();
}
}
private void SetupPage()
{
// Do other stuff
MyRepeater.DataSource = Repository.GetStuff()
MyRepeater.DataBind();
}
protected void MyRepeater_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
// Do all my stuff here
}
MyRepeater_ItemCommand nicht aufgerufen zu werden, wenn ich den Kommentar, wenn Linie (IsPostBack!). Sobald das auskommentiert ist und der Repeater bei jedem Postback datengebunden wird, funktioniert es OK. Ich habe das auf so vielen anderen Seiten gemacht, aber auf diesem scheint es einfach nicht zu funktionieren.
Wer ist sonst auf dieses Verhalten gestoßen oder hat eine Lösung?
Zeigen Sie uns den vollständigen Code Ihrer Seite (Markup & Backend) wenn möglich. – Bdiem
Vollständiges Markup passt nicht in das Kommentarfeld, aber auf der Seite ist nichts Ungewöhnliches. Verwenden von Masterseiten (keine Referenz zum Deaktivieren von ViewState in Masterseiten) und Inhaltsplatzhaltern und dann ein Repeater - sehr einfach. Code hinter hat einige weitere Datenbank/Repository-Zugriffscode aber wieder nichts Ungewöhnliches –
Haben Sie ViewState für diese Seite aktiviert? –