datalist分页

来源:互联网 发布:java web微信支付demo 编辑:程序博客网 时间:2024/05/19 22:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;


public partial class _Default : System.Web.UI.Page
{
    int pagesize = 3;
    protected void Page_Load(object sender, EventArgs e)
    {
       
    }
    private void binddatalist()
    {
        int index = Int32.Parse(ViewState["pageindex"].ToString());
        int count = Int32.Parse(ViewState["pagecount"].ToString());
        SqlConnection conn = new SqlConnection("server=.;database=MSSTB;uid=sa;pwd=sa");
        SqlDataAdapter da = new SqlDataAdapter("select * from Product2", conn);
        conn.Open();
        DataSet ds = new DataSet();
        da.Fill(ds, index * pagesize, pagesize, "Product2");
        Label1.Text = "第" + (index + 1) + "页";
        LinkButton1.Enabled = true;
        LinkButton2.Enabled = true;
        LinkButton3.Enabled = true;
        LinkButton4.Enabled = true;
        if (count == 1)
        {
            LinkButton1.Enabled = false;
            LinkButton2.Enabled = false;
            LinkButton3.Enabled = false;
            LinkButton4.Enabled = false;
            Label1.Text = "当前只有一页";
        }
        else
        {
            if (index == 0)
            {
                LinkButton1.Enabled = false;
                LinkButton2.Enabled = false;
            }
            if (index == count - 1)
            {
                LinkButton4.Enabled = false;
                LinkButton3.Enabled = false;
            }
        }
        DataList1.DataSource = ds.Tables["Product2"].DefaultView;
        DataList1.DataBind();
    }
    public int CalculateRecord()//返回行数
    {
        int intCount;
        string strCount = "select count(*) as c from Product2";
        SqlConnection Con = new SqlConnection("server=.;database=MSSTB;uid=sa;pwd=sa");
        SqlCommand addCommand = new SqlCommand(strCount, Con);
        addCommand.Connection.Open();
        SqlDataReader dr;
        dr = addCommand.ExecuteReader();
        if (dr.Read())
        {
            intCount = Int32.Parse(dr["c"].ToString());
        }
        else
        {
            intCount = 0;
        }
        dr.Close();
        return intCount;
    }
    protected void putdown(Object sender, CommandEventArgs e)//按钮事件
    {
        int index = Int32.Parse(ViewState["pageindex"].ToString());
        int count = Int32.Parse(ViewState["pagecount"].ToString());
        string cmd = e.CommandName;
        switch (cmd)
        {
            case "first": index = 0;
                break;
            case "next":
                if (index < (count - 1)) index++;
                break;
            case "up":
                if (index > 0) index--;
                break;
            case "end": index = count - 1;
                break;
        }
        ViewState["pageindex"] = index;
        binddatalist();
    }
    protected void Page_Init(object sender, EventArgs e)
    {

        int recordcount = CalculateRecord();//总数
        int pagecount = recordcount / pagesize;
        //如果有多余记录,则页面总数加一
        if (recordcount % pagesize != 0)
        {
            pagecount += 1;
        }
        ViewState["pagecount"] = pagecount;//总行数
        ViewState["pageindex"] = 0;//当前索引
        binddatalist();
    }
}








前台



<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:DataList ID="DataList1" runat="server">
        <ItemTemplate>
        <%# DataBinder.Eval(Container.DataItem, "Pname")%>
        </ItemTemplate>
        </asp:DataList>
    
    </div>
    行数&nbsp;&nbsp;
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    &nbsp;<br />
    页数&nbsp;&nbsp;
    <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    <br />
    <asp:LinkButton ID="LinkButton1" runat="server" CommandName="first" oncommand="putdown">首页</asp:LinkButton>
    <asp:LinkButton ID="LinkButton2" runat="server" CommandName="up" oncommand="putdown">上一页</asp:LinkButton>
    <asp:LinkButton ID="LinkButton3" runat="server" CommandName="next" oncommand="putdown">下一页</asp:LinkButton>
    <asp:LinkButton ID="LinkButton4" runat="server" CommandName="end" oncommand="putdown">尾页</asp:LinkButton>
    </form>
</body>
</html>