Команда ретранслятора ASP.Net не уволена - PullRequest
20 голосов
/ 24 августа 2009

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

Кто-нибудь еще сталкивался с таким поведением или есть решение?

Ответы [ 12 ]

0 голосов
/ 23 октября 2009

Попробуйте использовать Page_init вместо Page_load, и это должно решить проблему.

0 голосов
/ 24 августа 2009

Я не уверен в этом, но вам может потребоваться установить свойства CommandName и, необязательно, CommandArgument для кнопки, вызывающей событие ItemCommand . В противном случае ASP.NET предполагает, что на странице нет кнопки, которую вы бы хотели запустить. Вы можете попробовать это.

Кроме того, если вы не различаете имена команд, почему бы вместо этого не использовать событие Click каждой кнопки? Просто подпишитесь на тех, кто в ретрансляторе ItemCreated или ItemDataBound .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...