使用Repeater模板 二

类别:Asp 点击:0 评论:0 推荐:

ASP.NET提供的Repeater模板并不带有分页功能,如果是少量数据的话利用Repeater模板来实现分页还是不错的,毕竟Repeater模板较为灵活。

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>WebForm1</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <FONT face="宋体">
                <asp:Repeater id="Repeater1" runat="server">
                    <HeaderTemplate>
                        <table border="0">
                            <tr>
                                <td><font color="Highlight">编号</font></td>
                                <td><font color="Highlight">名称</font></td>
                                <td><font color="Highlight">描述</font></td>
                            </tr>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <tr bgcolor="LightYellow">
                            <td>
                                <%# DataBinder.Eval(Container.DataItem,"CategoryID") %>
                            </td>
                            <td>
                                <%# DataBinder.Eval(Container.DataItem,"CategoryName") %>
                            </td>
                            <td>
                                <%# DataBinder.Eval(Container.DataItem,"Description") %>
                            </td>
                        </tr>
                    </ItemTemplate>
                    <AlternatingItemTemplate>
                        <tr>
                            <td><%# DataBinder.Eval(Container.DataItem,"CategoryID") %></td>
                            <td><%# DataBinder.Eval(Container.DataItem,"CategoryName") %></td>
                            <td><%# DataBinder.Eval(Container.DataItem,"Description") %></td>
                        </tr>
                    </AlternatingItemTemplate>
                    <FooterTemplate>
                        </table>
                        <asp:ImageButton CommandName="previous" ID="previous" ImageUrl=".\images\previous.gif" Runat="server" />
                        <asp:ImageButton CommandName="next" ID="next" ImageUrl=".\images\next.gif" Runat="server" />
                    </FooterTemplate>
                </asp:Repeater></FONT>
        </form>
    </body>
</HTML>

 

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebApplication1
{
    /**//// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Repeater Repeater1;

        protected SqlConnection con = null;
        protected string CON_STR="server=192.168.0.99;database=Northwind;user id=sa;password=jabby";
        protected string SQL_QUERY="select * from Categories";
        protected SqlDataAdapter da = null;
        protected DataSet ds = null;

        private void Page_Load(object sender, System.EventArgs e)
        {
            if(!Page.IsPostBack)
            {
                BindData(0,4);
            }
        }

        Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            //
            InitializeComponent();
            base.OnInit(e);
        }
        
        /**//// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {    
            this.Repeater1.ItemCommand += new System.Web.UI.WebControls.RepeaterCommandEventHandler(this.Repeater1_ItemCommand);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion
        private void BindData(int start,int end)
        {
            try
            {
                con = new SqlConnection(CON_STR);

            }
            catch(SqlException sqlexp)
            {
                Response.Write("Connect to database Error! "+sqlexp.Message);
            }

            da = new SqlDataAdapter(SQL_QUERY,con);
            ds = new DataSet();
            try
            {
                da.Fill(ds,start,end,"Categories");
                this.Repeater1.DataSource = ds;
                this.Repeater1.DataBind();
            }
            catch(Exception exp)
            {
                Response.Write(exp.Message);
            }
            finally
            {
                con.Close();
            }
        }
        private void Repeater1_ItemCommand(object sender,System.Web.UI.WebControls.RepeaterCommandEventArgs e)
        {
            if(e.CommandName.Equals("next"))
            {
                BindData(4,7);
            }
            else if(e.CommandName.Equals("previous"))
            {
                BindData(0,4);
            }
        }
    }
}
    此分页利用的是DataAdapter的Fill功能,但它提供的这种方式效率较低,因此只适用于少量数据,在大量数据情况下效率明显降低。  截图: 编号 名称 描述 1 Beverages Soft drinks, coffees, teas, beers, and ales 2 Condiments Sweet and savory sauces, relishes, spreads, and seasonings 3 Confections Desserts, candies, and sweet breads 4 Dairy Products Cheeses   编号 名称 描述 5 Grains/Cereals Breads, crackers, pasta, and cereal 6 Meat/Poultry Prepared meats 7 Produce Dried fruit and bean curd 8 Seafood Seaweed and fish

本文地址:http://com.8s8s.com/it/it8348.htm