Обработка управляющих событий из нижнего колонтитула Repeater - PullRequest
0 голосов
/ 01 августа 2011

Предполагая, что у меня есть следующий повторитель.

<asp:Repeater ID="MyRepeater" runat="server" onitemdatabound="MyRepeater_ItemDataBound">
    <FooterTemplate>
        </table>
        <asp:Button ID="btnPrevious" runat="server" Text="<" />
        <asp:Label ID="lblCurrentPage" runat="server" Text="<%# PagingStatus() %>" />
        <asp:Button ID="btnNext" runat="server" Text=">" />
    </FooterTemplate>
</asp:Repeater>

Как я могу обработать события нажатия от btnPrevious и btnNext?

Я пробовал следующее:

protected void MyRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    Button btnPrevious = (Button)e.Item.FindControl("btnPrevious");
    Button btnNext = (Button)e.Item.FindControl("btnNext");

    if (btnPrevious != null)
        btnPrevious.Click += btnPrevious_Click;
    if (btnNext != null)
        btnNext.Click += btnNext_Click;
}

Но это не удалось (событие никогда не возникает) ..

Ответы [ 2 ]

3 голосов
/ 01 августа 2011

Вы можете использовать их так же, как и обычный обработчик события кнопки, например:

Html:

<asp:Button ID="btnNext" runat="server" CommandArgument="<%=Id%>" onclick="Button_OnClick" Text=">" />

Код:

protected void Button_OnClick(object sender, EventArgs e)
{
    Button button = sender as Button;
    if(button != null)
    {
       string commandArg = button.CommandArgument;
       //Do Work
    }
}

Вы можете использовать аргумент команды, чтобы узнать, какая кнопка была нажата.
Надеюсь, это поможет.

2 голосов
/ 01 августа 2011

Я бы предложил использовать событие ItemCommand ретранслятора. Вы все еще должны добавить команды к своим кнопкам, хотя. Как это:

<asp:Button ID="btnPrevious" runat="server" Text="<" CommandName="Previous"/>

protected void MyRepeater_ItemCommand(object source, RepeaterCommandEventArgs e) 
{
    if(e.CommandName.ToLower().Equals("previous")) {
        //go back
    }
    else
    {
        //go forward
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...