GridView+存储过程实现自定义分页

GridView自定义分页的四种存储过程 学习心得 1. 为什么不使用GridView的默认分页功能 首先要说说为什么不用GridView的默认的分页功能,GridView控件并非真正知道如何获得一个新页面,它只是请求绑定的数据源控件返回适合规定页面的行,分页最终是由数据源控件完成。当我们使用SqlDataSource或使用以上的代码处理分页时。 立即下载

GridView+存储过程实现自定义分页!其实很简单,主要是怎么保存当前页面的页码PageIndex问题,不过把这个解决了什么都好办了.因为在分页过程中:PageSize是一定的,我们可以用一个属性[GridView1.PageSize]来表示即可.保存PageIndex好多中方法,而且数据不是很庞大,基本不会好太多的资源.在这里使用ViewState来保存当前的PageIndex和PageCount[总页数].还是一句老话,话再多都没有例子直观.

在这里我还有一个疑惑:第一次读入的时候是PageIndex为0,但是点击首页的时候,为什么非得是1呢?

存储过程里的判断条件是if(PageIndex=1)啊!

这个问题搞不明白.但是放心,这种分页是绝对能出来的.我以例子保证.*_*

存储过程:

CREATE   PROCEDURE  sp_PagerAD
(
@adAddressId   varchar ( 50 ),  -- 广告位编号
@PageSize   int ,   --  一页显示记录数
@PageIndex   int    --  当前页码(从1开始)
)
as
declare   @strSQL   nvarchar ( 1000 )  --  主语句

-- 如果广告位编号为空,则显示全部信息
if ( @adAddressId   =   ' NO ' )
    
begin
        
-- 如果只有一页
         if  ( @PageIndex = 1 )
        
begin
        
set   @strSQL = " select   top  " + str ( @PageSize ) + "   *   from  ad  order   by  id"
        
-- 一定要order by,否则数据读取可能出错
         end
        
-- 如果不只一页
         else   if ( @PageIndex > 1 )
        
begin
            
set   @strSQL = " select   top  " + str ( @Pagesize ) + "  *   from  ad  where  id 
            
not   in  ( select   top  " + str ( @PageSize * ( @PageIndex - 1 ))  + " 
            id 
from  ad  order   by  id)  order   by  id"
        
end
    
end

-- 如果广告位编号不为空,则显示对应信息
else
    
begin
        
-- 和上面差不多的做法
     end
exec ( @strSQL )
GO

CS文件:

using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  System.Data.SqlClient;

public   partial   class  Admin_List_AD : System.Web.UI.Page
{
    SqlConnection conn;
    SqlCommand mycmd;
    GetData GD 
= new GetData();
    DataSet ds 
= new DataSet();
    CheckBox cb;
    
string sql;

    
protected void Page_Load(object sender, EventArgs e)
    
{
        
//判断Cookies["admin"]["adminName"];Cookies["admin"]["adminId"]是否存在
        if (Request.Cookies["admin"] == null)
        
{
            Response.Redirect(
"AdminLogin.aspx");
        }

        
//判断Cookies["admin"]是否存在
        else if (Request.Cookies["admin"]["adminName"] == null && Request.Cookies["admin"]["adminId"] == null)
        
{
            Response.Redirect(
"AdminLogin.aspx");
        }

        
else
        
{//保存用户名和用户编号
            ViewState["adminName"] = Request.Cookies["admin"]["adminName"].ToString();
            ViewState[
"adminId"] = Request.Cookies["admin"]["adminId"].ToString();
        }


        
//启动智能导航
        Page.SmartNavigation = true;
        
if (!IsPostBack)
        
{
            ViewState[
"adAddressId"] = "";
            
if (Request.QueryString["adAddressId"] != null)
            
{
                ViewState[
"adAddressId"] = Request.QueryString["adAddressId"].ToString();
            }
//获取当前页,总页数
            ListADInfo(ViewState["adAddressId"].ToString());
            SearchProduct(ViewState[
"adAddressId"].ToString(),GridView1.PageSize,0);
        }

    }


    
public void ListADInfo(string adAddressId)
    
{
        
if (adAddressId == "")
        
{
            sql 
= "select * from ad";
        }

        
else
        
{
            sql 
= "select * from ad where id = " + adAddressId;
        }

        ds 
= GD.DataBind(sql);
        GridView1.DataSource 
= ds.Tables[0];
        GridView1.DataBind();

        
//总页数
        LblPageCount.Text = GridView1.PageCount.ToString();
        ViewState[
"PageCount"] = GridView1.PageCount.ToString();
        
//当前页
        LblCurrentIndex.Text = Convert.ToString(GridView1.PageIndex + 1);
        ViewState[
"pageIndex"] = Convert.ToString(GridView1.PageIndex + 1);
        
//判断首页,上一页,下一页,尾页是否可用;
        CheckPageCount();
    }

    
/// <summary>
    
/// 查找所有区域信息
    
/// </summary>
    
/// <param name="adAddressId">广告位编号</param>
    
/// <param name="PageSize">每页数量</param>
    
/// <param name="CurrentPage">当前页码</param>

    public void SearchProduct(string adAddressId, int PageSize, int CurrentPage)
    
{
        conn 
= GD.Conn();
        conn.Open();
        
if (adAddressId == "")
        
{
            adAddressId 
= "NO";
        }

        
//调用存储过程
        mycmd = new SqlCommand("sp_PagerAD", conn);
        mycmd.CommandType 
= CommandType.StoredProcedure;
        
        
//每页数量
        mycmd.Parameters.Add(new SqlParameter("@PageSize", SqlDbType.Int));
        mycmd.Parameters[
"@PageSize"].Value = PageSize;

        
//当前页码
        mycmd.Parameters.Add(new SqlParameter("@PageIndex", SqlDbType.Int));
        mycmd.Parameters[
"@PageIndex"].Value = CurrentPage;

        
//广告位编号
        mycmd.Parameters.Add(new SqlParameter("@adAddressId", SqlDbType.VarChar, 50));
        mycmd.Parameters[
"@adAddressId"].Value = adAddressId;

        
//在这里只能用DataSet,不可以用ExecuteReader,因为他是按顺序读取,不支持分页
        SqlDataAdapter sda = new SqlDataAdapter(mycmd);
        sda.Fill(ds);
        GridView1.DataSource 
= ds;
        GridView1.DataBind();

        
////总页数
        LblPageCount.Text = ViewState["PageCount"].ToString();

        
////当前页
        LblCurrentIndex.Text = (Convert.ToInt32(ViewState["pageIndex"].ToString())).ToString();
        
////判断首页,上一页,下一页,尾页是否可用;
        CheckPageCount();
    }


    
//如果当前只有一页,则四者皆不可用,如果当前页为1,则首页不可用,如果当前页为未页,则尾页不能用.
    public void CheckPageCount()
    
{
        first.Enabled 
= true;
        prev.Enabled 
= true;
        next.Enabled 
= true;
        Last.Enabled 
= true;
        
int i = Convert.ToInt32(ViewState["PageCount"].ToString());
        
//如果只有一页
        if (i == 1)
        
{
            first.Enabled 
= false;
            prev.Enabled 
= false;
            next.Enabled 
= false;
            Last.Enabled 
= false;
        }

        
else if (Convert.ToInt32(ViewState["pageIndex"].ToString()) == 1)
        
{
            first.Enabled 
= false;
            prev.Enabled 
= false;
        }

        
if (Convert.ToInt32(ViewState["pageIndex"].ToString()) == Convert.ToInt32(ViewState["PageCount"].ToString()))
        
{
            Last.Enabled 
= false;
            next.Enabled 
= false;
        }

    }


    
//首页
    protected void first_Click(object sender, EventArgs e)
    
{
        ViewState[
"pageIndex"] = 1;
        SearchProduct(ViewState[
"adAddressId"].ToString(), GridView1.PageSize, 1);
    }

    
//上一页
    protected void prev_Click(object sender, EventArgs e)
    
{
        
if (Convert.ToInt32(ViewState["pageIndex"].ToString()) > 0)
        
{
            ViewState[
"pageIndex"] = Convert.ToInt32(ViewState["pageIndex"].ToString()) - 1;
            SearchProduct(ViewState[
"adAddressId"].ToString(), GridView1.PageSize, Convert.ToInt32(ViewState["pageIndex"].ToString()));
        }

    }

    
//下一页
    protected void next_Click(object sender, EventArgs e)
    
{
        
if (Convert.ToInt32(ViewState["pageIndex"].ToString()) < Convert.ToInt32(ViewState["PageCount"].ToString()))
        
{
            ViewState[
"pageIndex"] = Convert.ToInt32(ViewState["pageIndex"].ToString()) + 1;
            SearchProduct(ViewState[
"adAddressId"].ToString(), GridView1.PageSize, Convert.ToInt32(ViewState["pageIndex"].ToString()));
        }

    }

    
//尾页
    protected void Last_Click(object sender, EventArgs e)
    
{
        ViewState[
"pageIndex"] = Convert.ToInt32(ViewState["PageCount"].ToString());
        SearchProduct(ViewState[
"adAddressId"].ToString(), GridView1.PageSize, Convert.ToInt32(ViewState["pageIndex"].ToString()));
    }


    
/// <summary>
    
/// 批量删除所选商品
    
/// </summary>
    
/// <param name="sender"></param>
    
/// <param name="e"></param>

    int ADId;
    
protected void Button3_Click(object sender, EventArgs e)
    
{
        
for (int i = 0; i < GridView1.Rows.Count; i++)
        
{
            IsCheckBox(i);
            
if (cb.Checked)
            
{
                GD.OperateAD(ADId, 
"DelAD");
            }

        }

        
//重新绑定
        SearchProduct(ViewState["adAddressId"].ToString(), GridView1.PageSize, Convert.ToInt32(ViewState["pageIndex"].ToString()));
    }

    
private void IsCheckBox(int i)
    
{
        cb 
= (CheckBox)GridView1.Rows[i].Cells[0].FindControl("CheckBox1");
        ADId 
= Convert.ToInt32(GridView1.Rows[i].Cells[1].Text.ToString());
    }

}



注明:原帖地址:http://blog.youkuaiyun.com/Love1221/archive/2007/06/14/1651551.aspx


 
gridview存储过程+分页1 立即下载

相关推荐

最简单的GridView自定义分页

ASP.NET 控件GridView分页 ,最简单的GridView自定义分页

GridView自定义分页样式

 扩展GridView控件:自定义分页样式。显示总记录数、每页记录数、当前页数、总页数、首页、上一页、下一页、末页和分页按钮使用方法(设置CustomPagerSettings复合属性):PagingMode - 自定义分页的显示模式TextFormat - 自定义分页的文本显示样式(四个占位符:{0}-每页显示记录数;{1}-总记录数;{2}-当前页数;{3}-总页数)关键代码 usin

lovegod12的专栏 1679

gridview实现自定义分页

gridview实现自定义分页

GridView 自定义分页

1.默认分页方式 (1)是否允许分页 GridView的AllowPaging属性。 (2)每页记录数 GridView的PageSize (3)分页导航条形式 GridView的PagerSettings属性的Mode:Numeric,NextPrevious,NextPreviousFirstLast,NumericFirstLast。 ...

weixin_30872337的博客 153

GridView分页的实现以及自定义分页样式功能实例

本文为大家详细介绍下GridView实现分页并自定义的分页样式,具体示例代码如下,有想学习的朋友可以参考下哈,希望对大家有所帮助

AI Agent在智能投研中的实战:多智能体信息整合与策略生成

那么,什么是AI Agent?简单来说,AI Agent是一种能够感知环境、做出决策并采取行动的自主系统。自主性:能够在没有人类直接干预的情况下运行,对自己的行为和内部状态有一定的控制权。反应性:能够感知环境的变化,并及时做出反应。主动性:不仅能够对环境变化做出反应,还能够主动地设定目标并采取行动实现这些目标。社会性:能够与其他Agent(包括人类和人工智能)进行交互、协作和竞争。它们可以全天候不间断地监控和处理海量信息,大大提升信息处理能力;

AI大模型应用之禅 188

GridView 使用存储过程分页

存储过程 use blog go create procedure blogcontent_page @pageSize int, --一页多少条 @pageIndex int, --第几页 @pageCount int output --一共多少页,输出参数 as begin declare @totalRecords int --定

wjv20110308的专栏 448

Imatest-Star模块(西门子星图)

星图分析指南:基于ISO12233标准的MTF测试方法,通过放射状射线和正弦灰度变化评估相机SFR性能。

weixin_64706696的博客 1564

GridView分页系列

GridView分页系列 1:GridView自带分页:GridView自带的分页,是假分页,他每次从数据库把数据全部查询出之后,通过分页的算法,进行按每页数量进行分页。 分页的属性元素:分页功能的实现就是通过对这些属性元素的操作实现的。 //this.GvShow.PageIndex 当前页的索引 //this.GvShow.PageCount 总共的页数 //this.GvShow.

jie2454的专栏 672

直流电动机的建模仿真(1)他励,串励和并励电动机建模仿真

本文根据不同励磁方式的直流电动机的接线原理图,建立了相应的数学模型,然后根据与数学模型对应的等效电路以及模拟机械运动方程的等效电路,用Matlab/simulink中的SpecializedPower system库中的电路元件,建立了他励,并励和串励直流电动机的全等效电路仿真模型,经过与Matlab自带的直流电动机仿真模型比较以及仿真实例验证,所建立的仿真模型时完全正确的。

weixin_45670943的博客 7515

分析攻击流量样本

利用wireshark分析.pcap攻击样本的攻击流程,利用漏洞等。

一段旅途 6842

GridView利用分页存储过程实现真正的自定义分页查询

我们知道,在使用GridView进行分页的时候,通常是将所有的数据全部读取出来,然后再对其进行分页。可是,想过没有,如果有数以千万计的数据,一次这样全部读取然后绑定,每点击一次下一页又要这样绑定一次,或者修改数据后也是这样的重新绑定一次,你就会知道那速度有多慢了。这里,我采用的是存储过程进行分页,每一次只读取指定范围的数据,最终效果如图: 首先,我们要建立分页存储过程,打开Sqlver 2008

邹玉杰(邹琼俊)的专栏 1802

【软考高级架构】论文范文12——论生成式AI在软件开发中的应用与挑战

随着生成式AI技术的跨越式发展,以大语言模型为代表的生成式AI正在深刻改变软件开发的传统模式。在代码生成、测试构造、文档编写等环节,生成式AI展现出显著的效率提升潜力,但其应用也面临着代码质量不可控、安全漏洞植入、版权合规等严峻挑战。本文以笔者主导的某大型金融企业智能研发辅助平台建设项目为案例,围绕生成式AI在软件开发中的应用实践与应对挑战的策略展开论述。笔者担任系统架构师,负责平台架构设计、模型选型、质量保障机制及安全防线构建。

qq837993702的博客 275

GridView 自写分页 存储过程

GridView 自写分页 存储过程 前两天写了个分页的存储过程,今天把前台也写了,代码贴出来给大家分享下,有什么建议请赐教啊~ <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" CellPadding="4" F...

weixin_30448603的博客 85

一篇文章带你认识 SpringBoot

文章目录一、原有 Spring 优缺点分析二、SpringBoot 的概述 一、原有 Spring 优缺点分析 (1)Spring 的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的 Java 对象(Plain Old Java Object,POJO)实现了EJB的功能。

南淮北安的博客 765

PCL 基于强度的双边滤波【2026最新版】

基于强度信息的双边滤波代码实现、滤波前后点云未出现变化的原因以及获取带有强度pcd点云的方法。本文由优快云点云侠原创,博客长期更新,本文最近一次更新时间为:2026年5月24日。

点云侠的博客 29万+

GridView其中两种分页

GridView的分页功能在使用过程中很便捷,也很容易理解,下面来介绍两种较为常用的方式。      GridView这个控件内部就有一个自带的分页功能,设置方便,使用也比较容易,在界面上放一个数据源控件,配置好以后为GridView绑定上数据源,AllowPaging的属性设置为“true”让GridView来支持分页功能,剩下的就在PageSetting中设置自己的分页的样式以及属性就行了。

杨斐的专栏 1649

ZYNQ通过AXI DMA实现PL发送连续大量数据到PS DDR

方案二是在PS端的MPU配置中,将DMA缓冲区所在的内存区域标记为“不缓存”(Device或Strongly Ordered类型),但这样CPU访问这些内存区的速度会大幅降低,需要根据实时性和数据正确性的需求做权衡。更妙的是,描述符链表可以做成一个环状队列,放在DDR里让DMA循环取走,从而实现持续不断的“流式”传输。用FPGA实现FFT硬件加速的系统中也是如此:PS向PL提交待处理的FFT数据,PL硬件加速计算后,DMA把结果写回DDR,全程CPU几乎只做配置调度,大量数据吞吐留给了硬件通道。

QQ_778132974的博客 171

ASP.NET(c#)GRIDVIEW+SQL存储过程分页

这阵子接了一个单子,客户说数据量比较大,在做后台的时候就想到,传统的分页在数据少时候到是没什么,一旦上100W甚至1000W时候就慢了。于是就弄了一个GridView+SQL存储过程分页,代码如下:     首先在SQL数据库里的存储过程中新建一个存储过程,在文本中输入以下代码: CREATE PROCEDURE page_cut (@TAB NVARCHAR(50), @FILEDS NVARC

houweixing007的专栏 1014

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

GridView使用存储过程实现分页效果11.24

看帖评论是美德~!~!~!~!     可以根据自己数据库表更改其中数据名!!!!如果需要完整教程,可以联系我! //前台(aspx)代码 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"

550

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ASP.NET调用Oracle分页存储过程并结合ASPnetpager分页控件 实现分页功能

之前用的是GridView自带的分页功能,那速度啊慢的真实不行  ,决定自定义分页  Oracle库里有5W多条数据AspnetPager做的还是不错,拿过来用Oracle 分页存储过程: create or replace package JT_P_page istype type_cur is ref cursor;                    --定义游标变量用于返

zkvistor的专栏 3491

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

GridView自定义分页的四种存储过程

 GridView自定义分页的四种存储过程  1. 为什么不使用GridView的默认分页功能    首先要说说为什么不用GridView的默认的分页功能,GridView控件并非真正知道如何获得一个新页面,它只是请求绑定的数据源控件返回适合规定页面的行,分页最终是由数据源控件完成。当我们使用SqlDataSource或使用以上的代码处理分页时。每次这个页面被请求或者回发时,所有和这个SELE

xiaokuang513204的专栏 558
上一篇: 实现GridView中的数据的打印和导出到Excel
下一篇: 全国各省市联动下拉列表(异步动态加载)
hackhu
博客等级 码龄20年 17粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值