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