Asp.net repeater usage

本文介绍如何在ASP.NET中使用重复控件展示数据列表,并实现分页功能,通过代码示例展示具体实现过程。

using repeater control to display list<data> and paging

aspx :

 <form id="form1" runat="server">
    <div>
        <asp:Repeater runat="server" ID="rptTest">
            <HeaderTemplate>
                <table border="1" width="60%">
                    <tr style="background-color: #1e90ff">
                        <th>
                            
                        </th>
                        <th>
                            Id
                        </th>
                        <th>
                            Name
                        </th>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr style="background-color: #008000">
                    <td>
                        <asp:CheckBox runat="server" ID="chkRptItem" />
                    </td>
                    <td>
                       <asp:Label ID="lblRptItem_Id" runat="server" Text = <%#Eval("Id")%> ></asp:Label>
                    </td>
                    <td>
                       <asp:Label runat="server" ID="lblRptItem_Name" Text=<%#Eval("Name")%>></asp:Label> 
                    </td>
                </tr>
            </ItemTemplate>
            <AlternatingItemTemplate>
                <tr style="background-color: #00bfff">
                    <td>
                         <asp:CheckBox runat="server" ID="chkRptItem" />
                    </td>
                    <td>
                        <asp:Label ID="lblRptItem_Id" runat="server" Text = <%#Eval("Id")%> ></asp:Label>
                    </td>
                    <td>
                      <asp:Label runat="server" ID="lblRptItem_Name" Text=<%#Eval("Name")%>></asp:Label> 
                    </td>
                </tr>
            </AlternatingItemTemplate>
            <SeparatorTemplate>
                <tr style="background-color: #008b8b">
                    <td></td>
                    <td>-----------
                    </td>
                    <td>-----------
                    </td>
                </tr>
            </SeparatorTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>
        <div id="rptPageArea">
            <span>Page Size: </span>
            <asp:DropDownList runat="server" ID="ddlPageSize">
                <asp:ListItem Text="5" Value="5" Selected="True"></asp:ListItem>
                <asp:ListItem Text="10" Value="10"></asp:ListItem>
                <asp:ListItem Text="15" Value="15"></asp:ListItem>
                <asp:ListItem Text="20" Value="20"></asp:ListItem>
            </asp:DropDownList>
            <div>
                <asp:Label runat="server" ID="lblCurrentPageNo"></asp:Label>
                 Of 
                <asp:Label runat="server" ID="lblTotalPageNo"></asp:Label>
                
                <asp:Button runat="server" ID="btnPrevious" Text="Previous"></asp:Button>
                <asp:Button runat="server" ID="btnNext" Text="Next"></asp:Button>
            </div>
            <div>
                <span>Go To Page :</span> 
                <asp:TextBox runat="server" ID="txtPageNo"></asp:TextBox>
                
                <asp:Button runat="server" ID="btnGoToPageNo" Text="Go" />
            </div>
        </div>
        
        <div id="submitArea">
            <asp:Button runat="server" ID="btnSubmit" Text="Submit"/>
        </div>
    </div>
    </form>



cs:

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebCode.TestEntitys;
using System.Linq;

namespace WebCode.asp.net.Repeater
{

    public partial class RepeaterTest : Page
    {

        #region properties

        protected int PageSize
        {
            get { return int.Parse(ddlPageSize.SelectedValue); }
        }

        protected int CurrentPageNo
        {
            get { return !string.IsNullOrEmpty(lblCurrentPageNo.Text) ? int.Parse(lblCurrentPageNo.Text) : -1; }
            set { lblCurrentPageNo.Text = value.ToString(); }
        }

        protected int TotalPageNo
        {
            get { return !string.IsNullOrEmpty(lblTotalPageNo.Text) ? int.Parse(lblTotalPageNo.Text) : -1; }
            set { lblTotalPageNo.Text = value.ToString(); }
        }

        protected int GoToPage { get { return int.Parse(txtPageNo.Text); } }
        #endregion

        #region Init

        protected void RegPageEvent()
        {
            btnNext.Click += btnNext_Click;
            btnPrevious.Click += btnPrevious_Click;
            btnGoToPageNo.Click += btnGoToPageNo_Click;
            btnSubmit.Click += btnSubmit_Click;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            RegPageEvent();
            if (IsPostBack) return;

            CurrentPageNo = 0;
            btnNext_Click(sender, e);
        }

        #endregion

        #region Repeater paging

        private void btnPrevious_Click(object sender, EventArgs e)
        {
            var ds = GetLastestDataSource();

            if (CurrentPageNo == 1) return;
            CurrentPageNo--;

            BindRepeater(ds);
        }

        private void btnNext_Click(object sender, EventArgs e)
        {
            var ds = GetLastestDataSource();

            if (CurrentPageNo == TotalPageNo) return;
            CurrentPageNo++;

            BindRepeater(ds);
        }

        private void BindRepeater(IEnumerable<Student> ds)
        {
            rptTest.DataSource = ds.Skip(PageSize * (CurrentPageNo - 1)).Take(PageSize);
            rptTest.DataBind();
        }

        private IEnumerable<Student> GetLastestDataSource()
        {
            var ds = TestDs();
            var page = ds.Count / PageSize;

            if (page * PageSize != ds.Count)
                TotalPageNo = 1 + page;
            else
                TotalPageNo = page;

            return ds;
        }

        private void btnGoToPageNo_Click(object sender, EventArgs e)
        {
           
            var ds = GetLastestDataSource();

            if (GoToPage > TotalPageNo || GoToPage < 1) return;

            CurrentPageNo = GoToPage;

            BindRepeater(ds);
        }

        #endregion

        #region Data Source
        List<Student> TestDs()
        {
            var sl = new List<Student>();
            for (var i = 1; i < 36; i++)
            {
                sl.Add(new Student()
                {
                    Name = "Stu_" + i.ToString(),
                    Id = i
                });
            }
            return sl;
        }

        #endregion

        #region Submit

        void btnSubmit_Click(object sender, EventArgs e)
        {
            var rlt = "";
            foreach (RepeaterItem item in rptTest.Items)
            {
                var chk = (item.FindControl("chkRptItem") as CheckBox);

                if (chk != null && chk.Checked)
                {
                    var id = item.FindControl("lblRptItem_Id") as Label;
                    var name = item.FindControl("lblRptItem_Name") as Label;
                    rlt += string.Format("Id: {0} , Name: {1} ", id.Text, name.Text);
                    
                }
            }
            Page.ClientScript.RegisterStartupScript(GetType(), "", "alert('" + rlt + "');", true);
        }
        #endregion
    }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值