处理来自 Repeater 页脚的控制事件

发布于 2024-11-27 10:08:40 字数 972 浏览 4 评论 0原文

假设我有以下中继器。

<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>

如何处理来自 btnPreviousbtnNext 的点击事件?

我已尝试以下操作:

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;
}

但这失败了(该事件从未引发)..

Assuming I have the following repeater.

<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>

How can I handle the click events from btnPrevious and btnNext?

I have tried the following:

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;
}

But this has failed (The event is never raised)..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

尐籹人 2024-12-04 10:08:40

您可以像使用普通按钮事件处理程序一样使用它们,例如:

Html:

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

Code:

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

您可以使用命令参数来找出单击了哪个按钮。
希望这有帮助。

You can use them in the same way you would use a normal button event handler eg:

Html:

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

Code:

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

The you can use the command argument to find out which button was clicked.
Hope this helps.

夜深人未静 2024-12-04 10:08:40

我建议使用中继器的 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
    }
}

I would suggest using the ItemCommand event of the repeater. You still have to add the commands to your buttons though. Like this:

<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
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文