Кнопка OnItemCommand не срабатывает внутри asp:Repeater

У меня есть проект веб-форм, в котором у меня есть следующая кнопка, завернутая в asp: Repeater

    <asp:Repeater ID="rptBookingSlots" OnItemCommand="BookingSlotOnItemCommand" runat="server">
    <ItemTemplate>
    <tr>
    <td>
        <asp:Button ID="Button3" CssClass="Delete" CommandName="delete" CommandArgument="<%# (Container.DataItem as RemoveGroup).Id %>" runat="server" Text="Delete" OnClientClick="return confirm('Are you sure you want to permanently delete this record);" />
    </td>
    </tr>
    </ItemTemplate>
    </asp:Repeater>

Но когда я выбираю кнопку через внешний интерфейс, она никогда не попадает в метод, который я указал в своем коде позади

protected void BookingSlotOnItemCommand(object source, RepeaterCommandEventArgs e)
    {
       switch (e.CommandName)
       {
         case "delete": //do work to delete record
       }
    }

У меня есть метод page_preRender, который всегда попадает в почтовый пакет.

    protected void Page_PreRender(object sender, EventArgs e)
    {
        if (IsPostBack && !_dataBound)
        {
            BindAllData();
        }
    }

Может ли кто-нибудь объяснить, почему мой метод onItemCommand не срабатывает, когда я присоединяюсь к процессу, я не могу удалять записи?

Спасибо


person Paul    schedule 05.10.2016    source источник


Ответы (1)


Я бы сделал это так, чтобы загрузить данные в page_load, а не в pre_render.

Я проверил это, и команда кнопки вступила в действие

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            var myList = new List<string> {"foo", "bar"};
            rptBookingSlots.DataSource = myList;
            rptBookingSlots.DataBind();
        }
    }
person Rob C    schedule 05.10.2016
comment
Привет, кажется, это решает проблему, и я могу нажать команду, если я использую загрузку. не могли бы вы объяснить, почему это может быть? - person Paul; 05.10.2016
comment
Привет, page_load — это место, где создаются и инициализируются серверные элементы управления. См. эту ссылку для получения дополнительной информации о событиях двух страниц: msdn .microsoft.com/en-us/library/aa719775(vs.71).aspx - person Rob C; 05.10.2016