分页(二)

一、用a标签和HTML的input普通按钮

<asp:Repeater ID="Repeater1" runat="server">
            <HeaderTemplate><ul></HeaderTemplate>
            <FooterTemplate></ul></FooterTemplate>
            <ItemTemplate>
                <li><%# Eval("Name") %></li>
            </ItemTemplate>
        </asp:Repeater>
    </div>
        <a href="Default.aspx" runat="server" id="lnkPrev">
            <input id="Button1" type="button" value="上一页" /></a>
        <a href="Default.aspx" runat="server" id="lnkNext">
            <input id="Button2" type="button" value="下一页" /></a>
public partial class _Default : System.Web.UI.Page
{
    private MyDBDataContext _Context = new MyDBDataContext();
    private const int PAGESIZE = 3;
    private int _PageNo = 1;  //当前的页号
    //获取总页数
    public int GetPageCount()
    {
        //取总行数
        int rowsCount = _Context.Car.Count();
        //算出总页数
        int pageCount = (int)Math.Ceiling( 1.0*rowsCount / PAGESIZE);

        return pageCount;
    }
    public List<Car> GetPagedCar()
    {
        var query = _Context.Car.Skip(PAGESIZE*(_PageNo-1)).Take(PAGESIZE);
        return query.ToList();
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            if (Request["pn"] != null)
            {
                _PageNo = Convert.ToInt32(Request["pn"]);
            }
            Repeater1.DataSource = GetPagedCar();
            Repeater1.DataBind();

            if (_PageNo == 1)
            {
                lnkPrev.HRef = "Default.aspx?pn=1";
            }
            else
            {
                lnkPrev.HRef = "Default.aspx?pn=" + (_PageNo - 1).ToString();
            }
            if (_PageNo == GetPageCount())
            {
                lnkNext.HRef = "Default.aspx?pn=" + GetPageCount().ToString();
            }
            else
            {
                lnkNext.HRef = "Default.aspx?pn=" + (_PageNo + 1).ToString();
            }

        }
    }
}

二、用DropDownList和普通按钮

<form id="form1" runat="server">
    <div>
     <asp:Repeater ID="Repeater1" runat="server">
            <HeaderTemplate><ul></HeaderTemplate>
            <FooterTemplate></ul></FooterTemplate>
            <ItemTemplate>
                <li><%# Eval("Name") %></li>
            </ItemTemplate>
        </asp:Repeater>
    </div>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上一页" />
        <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="下一页" />
        <asp:DropDownList ID="PageList" runat="server" AutoPostBack="True" OnSelectedIndexChanged="PageList_SelectedIndexChanged">
        </asp:DropDownList>
    &nbsp;一共<asp:Label ID="lblAll" runat="server" Font-Bold="True" ForeColor="Red"></asp:Label>
        页,当前是第<asp:Label ID="lblNow" runat="server" Font-Bold="True" ForeColor="Red"></asp:Label>
        页</form>
public partial class Default2 : System.Web.UI.Page
{
    private MyDBDataContext _Context = new MyDBDataContext();
    private const int PAGESIZE = 3;
    private int _PageNo = 1;  //当前的页号
    //获取总页数
    public int GetPageCount()
    {
        //取总行数
        int rowsCount = _Context.Car.Count();
        //算出总页数
        int pageCount = (int)Math.Ceiling(1.0 * rowsCount / PAGESIZE);

        return pageCount;
    }
    //获取指定页面记录
    public List<Car> GetPagedCar()
    {
        _PageNo = Convert.ToInt32( PageList.SelectedValue);
        var query = _Context.Car.Skip(PAGESIZE * (_PageNo - 1)).Take(PAGESIZE);
        return query.ToList();
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            FillPageList();
            ShowCars();
        }
    }

    private void ShowCars()
    {
        Repeater1.DataSource = GetPagedCar();
        Repeater1.DataBind();

        //给当前页和一共几页赋值
        lblNow.Text = PageList.SelectedValue;
        lblAll.Text = PageList.Items.Count.ToString();
    }
    //在下拉列表里面获取总页数
    private void FillPageList()
    {
        PageList.Items.Clear();

        int pageCount = GetPageCount();
        for (int i = 1; i <= pageCount; i++)
        {
            ListItem li = new ListItem(i.ToString(), i.ToString());
            PageList.Items.Add(li);
        }
    }
    //点击下拉列表里的数字
    protected void PageList_SelectedIndexChanged(object sender, EventArgs e)
    {
        ShowCars();
    }
    //上一页
    protected void Button1_Click(object sender, EventArgs e)
    {
        if (PageList.SelectedIndex == 0)
        {
            return;
        }
        PageList.SelectedIndex--;
        ShowCars();
    }
    //下一页
    protected void Button2_Click(object sender, EventArgs e)
    {
        if (PageList.SelectedIndex == GetPageCount() - 1)
        {
            return;
        }

        PageList.SelectedIndex++;
        ShowCars();
    }
}
时间: 2024-11-05 06:08:10

分页(二)的相关文章

thinkphp分页二,分装到funciton.php

function.php代码 <?php /* 全局分页 * $table 数据表名 * $order 排序 * $pagesize 每页显示N个 * $where 查询条件 * $rollPpage 控制分页 循环显示个数 */ function getpage($table,$pagesize,$order,$where='',$rollPpage='10'){ $m = M($table); $count = $m->where($where)->count();// 查询满足要求

asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTest.aspx.cs" Inherits="renmai_PageTest" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xh

ExtJs_关于combobox的那些分页二三事

近来项目需求,在新增或查询的时候有一个标签对象需要使用下拉菜单,但是数据可多可少的.少了的时候看起来还不错,紧凑一点.但是一旦躲起来看着就那么别扭了.人说百度不可靠,我发现这话真没错,想着做个分页来解决这玩意儿,没想到百度出来的结果催人泪下啊.好多不负责任的博主什么的直接复制粘贴给链接就结束了,弄得我一愣一愣的.靠天靠地不如靠自己这真是老祖宗的至理名言.为了方便以后检阅自己的成果,记录一下. 先是JS内  var shop_store=new Ext.data.Store(); 1 shop_s

存储过程分页(二)

我认为比较好的分页存储过程 create PROCEDURE Sp_Conn_Sort(@tblName   varchar(255),       -- 表名 @strGetFields varchar(1000) = '*',  -- 需要返回的列 @fldName varchar(255)='',      -- 排序的字段名 @PageSize   int = 40,          -- 页尺寸 @PageIndex  int = 1,           -- 页码 @doCoun

通用分页(二)

通用分页核心思路:将上一次查询请求再发一次,只是当前页变了而已. 首页 1 2 3 4 … 100 末页 跳转 MySQL分页:select * from 表 limit 3,3 每页显示记录数 自己设置当前页 来自前端总页数 总记录数%每页显示记录数==0?总记录数/每页显示记录数:总记录数/每页显示记录数+1总记录数 数据库统计count()每页起始记录数   =(当前页-1)*每页显示记录数+1 总共101条记录,每页显示10条第一页: 1-10第二页: 11-20第三页: 21-30 每

Python学习day13 Django 分页/Session/Cookie

Created on 2017年5月3日 第1课:上节作业简介 鼠标放上表单后进入编辑模式-----需学习----CMDB里会学到模态对话框里--弹出对话框---对后台进行操作---方式:1 Form-用Submit页面整个刷新 2 用Ajax后台请求,通过Sessuss方式返回数据来控制模态对话框 第2课:本节内容1第3课:本节内容2 第4课:django自定义分页一 28minutes第5课:django自定义分页二 35minutes url(r'^index/(\d*)', views.

DEDECMS教程:首页实现分页的两种方法

有两种办法可以实现: 一.用arclist标签+Ajax实现织梦首页分页 二.交叉栏目ID 实现织梦首页分页 一.用arclist标签+Ajax实现织梦首页分页 1.必须在首页<head></head>中引入 <script language="javascript" type="text/javascript" src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"

Django-RestFrameWork之分页 视图 路由 渲染器

目录 一.分页 二.视图 三.路由 四.渲染器 一.分页 试问如果当数据量特别大的时候,你是怎么解决分页的? 方式a.记录当前访问页数的数据id 方式b.最多显示120页等 方式c.只显示上一页,下一页,不让选择页码,对页码进行加密 1.基于limit offset 做分页 from rest_framework.pagination import LimitOffsetPagination 1 urlpatterns = [ 2 url(r'^admin/', admin.site.urls)

Django中html里的分页显示

分页一 因为数据量过大,而又想直观便捷的查看数据,进而通过分页显示就可以完成这项工作 app中views.py LIST=[] #全局定义一个LIST for i in range(100): #数据量为100 LIST.append(i) #使LIST里面包含0-99个自然数 def user_list(request): current_page=request.GET.get('p',1) #用户不存在默认看第一页 current_page=int(current_page) #使char

项目感言--功能的模块化

功能模块化之后,用起来就像组装机一样,每一个模块都做的功能都做的好,而且用很不错的兼容性,那么组装起来的电脑也不会差劲. 但是公司好像没有想过这些,每一个项目组都自己做自己的.项目组里如果做出来了一个功能,后面用到了再去复制就好了,有时如果有前段框架自带的“感觉上最好了”,功能模块化,就这样草率的实现了,这些‘模块化功能的代码,就这样散落在项目中的各处’,快速开发,就是尽快的实现老板想要的功能,他不管你怎么做的,他只要结果.每次想到这里都有点惋惜的感觉.最后再强调几点,1. 模块化的最重要的一点