DataGread的翻页(转转)

本文介绍了一种使用SQL和C#实现数据分页的方法,包括如何创建带有自增ID的DataTable,填充数据集,以及如何通过筛选实现翻页功能。此外,还提供了两种获取当前页面数据的SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 /*定义一个datatable dt */

SqlConnetion conn =creatConn(); 

SqldataAdapter   Adapter = new SqlDataAdapter(mySqlCode,conn);
            ds = new DataSet();
            /*****************************添加标识列***************************************/
            DataTable dt = new DataTable("test");
            DataColumn dc = dt.Columns.Add("pid",typeof(int));
            dc.AutoIncrement = true;
            dc.AutoIncrementSeed = 1;
            dc.AutoIncrementStep = 1;
            ds.Tables.Add(dt);
            /*****************************添加标识列***************************************/
            Adapter.Fill(ds,"test");
            dataGrid1.SetDataBinding(ds,"test");
            /****************************实现翻页*****************************************/
            int rows = ds.Tables["test"].Rows.Count;
            if (rows % pagerows == 0)
            {
                totalpages = rows / pagerows;
            }
            else
            {
                totalpages = rows / pagerows + 1;
            }
            beginid = 1;
            endid = beginid + pagerows;
            //筛选
            DataView dv = ds.Tables["test"].DefaultView;
            dv.RowFilter = "pid> ="+beginid +"and pid <="+endid;
            dataGrid1.DataSource = dv;

            cupages=1;
            this.label1.Text = "当前页为:" + cupages;

 

 

 

/*下一页* /

if (cupages  < totalpages)
            {
                beginid = endid;
                endid = beginid + pagerows;

                DataView dv = ds.Tables["test"].DefaultView;
                dv.RowFilter = "pid> =" + beginid + "and pid <=" + endid;
                //dataGrid1.DataSource = dv;

                cupages++;
                this.label1.Text = "当前面为:"+cupages;
            }

/*上一页* /

 

            if (cupages> 1)
            {
                endid = beginid;
                beginid = beginid - pagerows;

                DataView dv = ds.Tables["test"].DefaultView;
                dv.RowFilter = "pid> ="+beginid+"and pid <="+endid;
                //dataGrid1.DataSource = dv;

                cupages--;
                this.label1.Text = "当前面为:"+cupages;
            }

 

/*获得当前列出的id数组的sql语句*/

//第一种

SELECT * FROM ( 
SELECT TOP @PageSize * FROM ( 
SELECT TOP @PageSize*(@PageIndex+1) * FROM @TableName 
ORDER BY @PrimaryKey ASC 
) TableA ORDER BY @PrimaryKey DESC 
) TableB ORDER BY @PrimaryKey ASC 
//第二种

 

SELECT TOP @PageSize * FROM @TableName 
WHERE @PrimaryKey NOT IN ( 
SELECT TOP @PageSize*@PageIndex @PrimaryKey FROM @TableName 
ORDER BY @PrimaryKey ASC 
) ORDER BY @PrimaryKey ASC 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值