Хорошо, я использовал репитеры буквально сотни раз без проблем, но сегодня что-то пошло не так. У меня есть повторитель, и я подписываюсь на событие itemCommand, но когда моя команда запускается, страница отправляется обратно, но событие не запускается.
Чтобы обойти это, я должен выполнить привязку данных на каждом постбеке.
Мой ретранслятор выглядит так:
<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>
и мой код за вот так:
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 не вызывается, если я не закомментирую строку if (! IsPostBack). Как только это закомментировано, и повторитель получает данные для каждой обратной передачи, он работает нормально. Я делал это на многих других страницах, но на этом он просто не работает.
Кто-нибудь еще сталкивался с таким поведением или есть решение?