Repeater进行模板设计以及实现数据的分页显示

来源:互联网 发布:刷砖软件 编辑:程序博客网 时间:2024/05/03 00:22

在讲解Repeater控件的用法之前首先要说一说什么是模板,模板就是一组HTML元素和控件,他们构成组件特定部分的布局,用来控制控件样式和外观,其次,并非所有的Web服务器控件都支持模板,而Repeater控件、DataGrid控件和DataList控件等这些复杂的控件就支持模板,当然了他们对模板的支持程度不一样,这篇博客就详细介绍Repeater控件如何进行模板设计以及如何简单的进行数据的分页显示。


Repeater支持的模板:ItemTemplate普通模板、AlternatingItemTemplate交替模板、HeaderTemplate页眉模板、FooterTemplate页脚模板、SeparatorTemplate分隔符模板。


这五种模板分别针对于数据的一般显示、交替数据显示、设置页眉和页脚以及添加分隔符等。

Repeater控件不支持直接编辑,必须在HTML源中手动填写。

设计界面:


在控件中用一个table显示数据。

下面就是手动填写的HTML代码:

<form id="form1" runat="server">        <h1>分页显示</h1>        <p>            <asp:Label ID="Label1" runat="server" Text="当前页:"></asp:Label>            <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上一页" />            <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="下一页" />        </p>    <div>        </div>        <asp:Panel ID="Panel1" runat="server" CssClass="auto-style1" Height="249px" Width="500px">            <asp:Repeater ID="Repeater1" runat="server">               <span style="color:#3366ff;"> <ItemTemplate>                    <tr>                        <td>                            <%# DataBinder.Eval(Container.DataItem,"userID")%>                            <%# DataBinder.Eval(Container.DataItem,"userName")%>                        </td>                    </tr>                </ItemTemplate>                <AlternatingItemTemplate>                    <font color="blue">                    <tr>                        <td>                            <%# DataBinder.Eval(Container.DataItem,"userID")%>                            <%# DataBinder.Eval(Container.DataItem,"userName")%>                        </td>                    </tr>                    </font>                </AlternatingItemTemplate>                <HeaderTemplate>                    <h3>模板页眉</h3>                    <table border="1">                        <tr>                            <td>用户ID</td>                        </tr>                                </HeaderTemplate>                <FooterTemplate>                    <h3>模板页脚</h3>                   </table>                 </FooterTemplate></span>            </asp:Repeater>        </asp:Panel></form>

我们将控件放在一个容器Panel里面,然后对于显示数据的部分用一个表格显示,我们用DataBinder.Eval()方法绑定数据,具体的绑定过程为:

<%#DataBinder.EVal(Contalner.Dataltem,"max--IVI","{0:c}")%>

其中的max—IVI是绑定的字段,{0:c}是绑定数据的显示类型(可以绑定任何的类型,自己设置这个参数即可)。

这里用到了四个模板分别为普通模板、交替模板、页眉和页脚,如何使用就不细说了。

设置好了页面,下面就是后台代码的编写了,同样还是和之前介绍的方法一样,创建一个连接数据库的DB类:


编写连接服务器数据库的语句和之前的一样,就不详细介绍了。

接下来就是数据分页显示:

编写分页显示数据的方法:

private void dataBindToRepeater() {<span style="white-space:pre"></span>//设定当前页,对文本框中的内容进行强制转换           
 <span style="white-space:pre"></span>    int curPage = Convert.ToInt32(this.Label2.Text);  <span style="white-space:pre"></span>//定义连接对象            SqlConnection con = DB.createCon();            SqlDataAdapter sda = new SqlDataAdapter();//创建一个适配器用来保存数据            sda.SelectCommand = new SqlCommand("select * from T_UserInfo", con); //定义命令对象用来对数据库操作            DataSet ds = new DataSet();//定义一个记录集            sda.Fill(ds); //将数据填充到记录集实例化的表            //引入命名空间            System.Web.UI.WebControls.PagedDataSource ps = new PagedDataSource();            ps.DataSource = ds.Tables[0].DefaultView;//设定可分页的数据源为显示表的视图            ps.AllowPaging = true;//允许分页            ps.PageSize = 3;//每页中显示的数量为3            ps.CurrentPageIndex = curPage - 1;//设置当前页            this.Button1.Enabled = true;            this.Button2.Enabled = true;<span style="white-space:pre"></span>//如果是当前页,按钮不可用         <span style="white-space:pre"></span>if (curPage==1)<span style="white-space:pre"></span> {         <span style="white-space:pre"></span>this.Button1.Enabled = false; <span style="white-space:pre"></span>}   <span style="white-space:pre"></span>//如果是最后一页,按钮不可用     <span style="white-space:pre"></span>if (curPage==ps.PageCount) <span style="white-space:pre"></span>{         <span style="white-space:pre"></span>this.Button2.Enabled = false;<span style="white-space:pre"></span> }         <span style="white-space:pre"></span>this.Repeater1.DataSource = ps;        <span style="white-space:pre"></span> this.Repeater1.DataBind(); }对上一页的按钮单击事件进行编码:protected void Button1_Click(object sender, EventArgs e){  //对Label2中的内容进行转换,然后减1之后重新赋值给Label2    this.Label2.Text = Convert.ToString(Convert.ToInt32(this.Label2.Text) - 1);//重新绑定数据    this.dataBindToRepeater(); }对下一页的按钮单击事件进行编码:protected void Button2_Click(object sender, EventArgs e){//对Label2中的内容进行转换,然后加1之后重新赋值给Label2     this.Label2.Text =Convert.ToString(Convert.ToInt32(this.Label2.Text) + 1);//重新绑定数据     this.dataBindToRepeater();}


此时利用Repeater就简单的实现了数据的分页显示,首先设定可分页的数据源为显示表的视图,然后在这个视图中利用AllowPaging属性为true允许分页,然后进行分页的其他属性设置,最后通过页面加1或者减1的形式,进行上一页和下一页的显示。还有一点需要注意的就是对于对象类型的转换,使用强制类型转换或者利用Convert函数进行转换格式

0 0