分页

///前台

<body>
    <form id="form1" runat="server">
    <table>
        <tr>
            <td>
                <asp:TextBox ID="txtKey" runat="server"></asp:TextBox>
                <asp:ImageButton ID="btnQuery" Width="30" Height="30" ImageUrl="images/Penguins.jpg"
                    runat="server" OnClick="btnQuery_Click" /><asp:Label ID="lbinfo" runat="server" Text=""></asp:Label>
            </td>
        </tr>
        <tr>
            <td>
                <div id="divResult" runat="server" />
            </td>
        </tr>
        <tr>
            <td>
                <asp:LinkButton ID="btnFirst" runat="server" οnclick="btnFirst_Click">第一页</asp:LinkButton>
                <asp:LinkButton ID="btnPre" runat="server" οnclick="btnPre_Click">上一页</asp:LinkButton>
                <asp:LinkButton ID="btnNext" runat="server" οnclick="btnNext_Click">下一页</asp:LinkButton>
                <asp:LinkButton ID="btnLast" runat="server" οnclick="btnLast_Click">最后一页</asp:LinkButton>
                <asp:TextBox ID="txtpageindex" runat="server"></asp:TextBox>
                <asp:Button ID="btnGo" runat="server" Text="GO" οnclick="btnGo_Click" />
                <asp:Label ID="lbpageindex" runat="server" Text=""></asp:Label>
            </td>
        </tr>
    </table>
    </form>
</body>

/后台

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Text;
using System.Data;


namespace WebApplication1
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        int pagesize = 3;
        //int pagelastindex = 0;
        //int pageindex = 1;


        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack==false)
            {
                //ViewState虽然是声明在函数内部,看似是局部变量,但是在类中的其他函数中也可以直接使用


                ViewState["pageindex"] = 1;
                GetCount();
                LoadData();
            }
        }
        //获取总的页数,也就是最后一页的页码
        private void GetCount()
        {
string strcon = @"Data Source=PC-YZC\SQLEXPRESS;Initial Catalog=News;Persist Security Info=True;User ID=sa;Password=19920514";
            SqlConnection conn = new SqlConnection(strcon);
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "SELECT COUNT(*) FROM T_News WHERE NewsTitle LIKE @newskey OR NewsContent LIKE @newskey";
            cmd.Parameters.AddWithValue("@newskey","%"+txtKey.Text+"%");
            conn.Open();
            int totalcount = Convert.ToInt32(cmd.ExecuteScalar());
            if (totalcount % pagesize == 0)
            {
                ViewState["pagelastindex"] = totalcount / pagesize;
            }
            else
            {
                ViewState["pagelastindex"] = totalcount / pagesize + 1;
            }
        }
        //加载数据
        private void LoadData()
        {
string strcon = @"Data Source=PC-YZC\SQLEXPRESS;Initial Catalog=News;Persist Security Info=True;User ID=sa;Password=19920514";
            SqlConnection conn = new SqlConnection(strcon);
            SqlCommand cmd = conn.CreateCommand();
            //cmd.CommandText = "SELECT TOP(@pagesize) * FROM T_News WHERE(NewsTitle LIKE @newskey OR NewsContent LIKE @newskey) AND Id NOT IN(SELECT TOP ((@pageindex-1)*@pagesize) Id FROM T_News WHERE NewsTitle LIKE @newskey OR NewsContent LIKE @newskey ORDER BY Id )ORDER BY Id";
            //cmd.CommandText = "SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY Id) AS rownumber, NewsTitle,NewsContent,CreateTime FROM T_News WHERE NewsTitle LIKE @newskey OR NewsContent LIKE @newskey) A WHERE A.rownumber>(@pageindex-1)*@pagesize AND A.rownumber<=@pageindex*@pagesize";


            //使用存储过程
            cmd.CommandText = "Pro_GetNewsByTitleAndCount";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@pageindex", Convert.ToInt32(ViewState["pageindex"]));
            cmd.Parameters.AddWithValue("@pagesize", pagesize);
            cmd.Parameters.AddWithValue("@newskey","%"+txtKey.Text+"%");
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            
            //显示当前页码和总页码
            lbpageindex.Text = ViewState["pageindex"].ToString()+"/"+ViewState["pagelastindex"].ToString()+"页";


            //将当前页码赋给页码文本框
            txtpageindex.Text = ViewState["pageindex"].ToString();
            cmd.Dispose();
            conn.Dispose();
            #region 字符串拼接
            StringBuilder sb1 = new StringBuilder();
            sb1.Append("<table border=2>");
            sb1.Append("<tr><td>标题</td><td>内容</td><td>创建时间</td></tr>");
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                sb1.Append("<tr>");
                sb1.Append("<td>" + dt.Rows[i]["NewsTitle"].ToString() + "</td>");
                sb1.Append("<td>" + dt.Rows[i]["NewsContent"].ToString() + "</td>");
                sb1.Append("<td>" + dt.Rows[i]["CreateTime"].ToString() + "</td>");
                sb1.Append("</tr>");
            }


            sb1.Append("</table>");
            #endregion


            divResult.InnerHtml = sb1.ToString();
        }
        //搜索
        protected void btnQuery_Click(object sender, ImageClickEventArgs e)
        {
            ViewState["pageindex"] = 1;
            GetCount();
            LoadData();
        }

      //第一页
        protected void btnFirst_Click(object sender, EventArgs e)
        {
            ViewState["pageindex"] = 1;
            LoadData();
        }

      //上一页
        protected void btnPre_Click(object sender, EventArgs e)
        {
            int pageindex = Convert.ToInt32(ViewState["pageindex"]);
            if (pageindex > 1)
            {
                pageindex--;
                ViewState["pageindex"] = pageindex;
                //放到里边,当pageindex=1的时候,也就是当已经到达第一页的时候,用户如果重复点击“上一页”,不会再次去数据库里查询第一页的数据,而是使用ViewState中存储的第一页的数据
                LoadData();
            }
        }
        //下一页
        protected void btnNext_Click(object sender, EventArgs e)
        {
            int pageindex = Convert.ToInt32(ViewState["pageindex"]);
            if (pageindex < Convert.ToInt32(ViewState["pagelastindex"]))
            {
                pageindex++;
                ViewState["pageindex"] = pageindex;
                LoadData();
            }
        }

     //最后一页
        protected void btnLast_Click(object sender, EventArgs e)
        {
            ViewState["pageindex"] = ViewState["pagelastindex"];
            LoadData();
        }


        protected void btnGo_Click(object sender, EventArgs e)
        {
            int numb=0;
            if (int.TryParse(txtpageindex.Text, out numb)==true)
            {
                if (numb>=1 && numb<=Convert.ToInt32(ViewState["pagelastindex"]))
                {
                    ViewState["pageindex"] = numb;
                    LoadData();
                }
            }            
        }
    }
}

///效果


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值