gpt4 book ai didi

c# - Repeater 内的 Linkbutton 用于分页 ASP.Net

转载 作者:太空狗 更新时间:2023-10-29 21:20:26 25 4
gpt4 key购买 nike

我正在做一个带有搜索的网页,它从 MSSQL 中获取大量信息。我所做的是一个存储过程,它只返回要在网站上看到的页面。

现在我正在处理分页,因为我需要显示类似于谷歌的内容。如果您在第 1 页,它们会显示前 10 页,如果您在第 19 页,它们会从第 9 页到第 28 页显示。

我认为显示页码的最佳选择是在转发器中使用链接按钮。我现在遇到的问题是我不知道在回发时获取页码的最佳方法。

做一个快速示例,我将一个 ArrayList 分配给 repeater.datasource:

  <asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument="<%# Container.DataItem %>"><%# Container.DataItem %></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
<asp:LinkButton ID="LinkButton2" runat="server" CommandArgument="4654">Test #1</asp:LinkButton>

在我的 Default.aspx.cs 文件中我有下一个代码

    protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
string x = LinkButton2.CommandArgument;
//string y = LinkButton1.CommandArgument;
//I know this line will not work since the Linkbutton1 is inside the Repeater.
}

我应该怎么做才能让它发挥作用?

有没有人对此分页有更好的解决方案?

谢谢

杰瑞

最佳答案

您正在寻找 ItemCommand 事件:

  <asp:Repeater ID="Repeater1" OnItemCommand="ItemCommand" runat="server">
<ItemTemplate>
<asp:LinkButton CommandName="ButtonEvent" CommandArgument="<%# Container.DataItem %>" Text="<%#Container.DataItem %>" runat="server"></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Repeater1.DataSource = Enumerable.Range(1, 10);
Repeater1.DataBind();
}
}

protected void ItemCommand(Object Sender, RepeaterCommandEventArgs e)
{
Response.Write("The no. " + ((LinkButton)e.CommandSource).Text + " button was clicked!");
}

...但是您真的确定需要 LinkBut​​ton 吗?一个普通的 HTML anchor 标记可能工作得很好,而且不太模糊。 :)

关于c# - Repeater 内的 Linkbutton 用于分页 ASP.Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com