微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 在Repeater内部的Linkbutton用于分页ASP.Net

我正在做一个带有搜索的网页,它会从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锚标签也可以正常工作,并且它的模糊性较低.

原文地址:https://www.jb51.cc/csharp/91553.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐