标题:vs2005里DataGridView怎么分页显示记录?
只看楼主
tanxiaolin
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2007-12-12
 问题点数:0 回复次数:10 
vs2005里DataGridView怎么分页显示记录?
各们前辈请指教 下。
我想用datagridview分页显示记录,也就是 我点击上一页和下一页实现分页显示功能。
网上找了很多贴子都是讲DataGrid分页。但是在vs2005里面根本没有这个控件啊
在这里请各位前辈帮忙指点下,先谢了。
搜索更多相关主题的帖子: DataGridView 记录 前辈 datagridview 控件 
2007-12-24 17:49
sun521
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-11-15
得分:0 
在2005内可以加载 datagrid
2007-12-25 15:07
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
得分:0 
还是winforms

愛生活 && 愛編程
2007-12-25 17:16
tanxiaolin
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2007-12-12
得分:0 
winforms的..
2007-12-25 17:35
C_B_Lu
Rank: 1
等 级:新手上路
威 望:1
帖 子:453
专家分:0
注 册:2006-1-10
得分:0 
关注, 我也遇到同样的问题,

楼主找到答案后别忘了也发我一份.....

先谢了

帮助那些真正需要帮助的人,是对帮助你的人最好的回报!
2007-12-25 20:57
tanxiaolin
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2007-12-12
得分:0 
dataGridView1.ScrollBars = ScrollBars.None;

   private void button6_Click(object sender, EventArgs e)   //上一页
        {
            if (Convert.ToInt32(comboBox1.Text) > 1)
            {
                comboBox1.Text = Convert.ToString(Convert.ToInt32(comboBox1.Text) - 1);
                dataGridView1.FirstDisplayedScrollingRowIndex = comboBox1.SelectedIndex * 11;
            }
            else
            {
                MessageBox.Show("已到第1页");
            }

        }
        private void button7_Click(object sender, EventArgs e)  //下一页
        {
            if ((Convert.ToInt32(comboBox1.Text) >= 1)&&(Convert.ToInt32(comboBox1.Text)<=13))
            {
               
                    comboBox1.Text = Convert.ToString(Convert.ToInt32(comboBox1.Text) + 1);
                    dataGridView1.FirstDisplayedScrollingRowIndex = comboBox1.SelectedIndex * 11;           
                             
            }
            
        }
首先把datagridview设置为不要滚动条,然后实现数据分页显示。

其实这种方法很着劲,如果是太大的数据库,就造成很严重的后果。
最好是使用数据存储,这样的话可以减少数据库的压力,你们认为是不是?
所以在这里还是希望各位高手,介绍下关于datagridview分页显示的方法及代码。
2007-12-26 11:46
zhjesse
Rank: 1
来 自:西藏拉萨
等 级:新手上路
帖 子:205
专家分:0
注 册:2007-4-3
得分:0 
datagridview中有自带的分页功能
不过这个分页是一次性把所有数据都从数据库中读出
数据量如果过大效率太低

在datagirdview控件的右上角,有个可以设置一些属性的小图标
你点击开后就会有分页属性设置

想了解西藏的天葬文化、藏北比如骷髅墙吗?[url=http://www.]【雪域藏北论坛】[/url]给你诠释!
2007-12-26 12:15
tanxiaolin
Rank: 1
等 级:新手上路
帖 子:71
专家分:0
注 册:2007-12-12
得分:0 

那各位朋友出了这种方法以外,学有没有效率比较高一些的方法呢?
如果你知道的话,请大胆的讲出来
2007-12-26 12:42
1212q
Rank: 1
来 自:天上人间
等 级:新手上路
帖 子:676
专家分:0
注 册:2007-12-7
得分:0 
可以用存储过程来实现
if exists(select * from sysobjects where name='Proc_MyPagination')
    drop procedure Proc_MyPagination
go

create procedure Proc_MyPagination
/*
***************************************************************
** 分页存储过程 **
***************************************************************
参数说明:
1.Tables :表名称,视图
2.PrimaryKey :主关键字
3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc
4.CurrentPage :当前页码
5.PageSize :分页尺寸
6.Fields :字段
7.Filter :过滤语句,不带Where
8.Group :Group语句,不带Group By
9.GetCount :返回记录总数, 非 0 值则返回
***************************************************************/
    @Tables varchar(600),
    @PrimaryKey varchar(100),
    @Sort varchar(200)=null,
    @CurrentPage bigint=1,
    @PageSize bigint=10,
    @Fields varchar(1000)='*',
    @Filter varchar(1000)=null,
    @Group varchar(1000)=null,
    @GetCount bit=0
as
    if(@GetCount=0)
        begin

            /*默认排序*/
            if @Sort is null or @Sort=''
                set @Sort=@PrimaryKey
        
            declare @SortTable varchar(100)
            declare @SortName varchar(100)
            declare @strSortColumn varchar(200)
            declare @operator char(2)
            declare @type varchar(100)
            declare @prec int
        
            /*设定排序语句*/
            if charindex('desc',@Sort)>0
                begin
                set @strSortColumn=replace(@Sort,'desc','')
                set @operator='<='
                end
            else
                begin
                if charindex('asc',@Sort)=0
                    set @strSortColumn=replace(@Sort,'asc','')
                set @operator='>='
                end
        
            if charindex('.',@strSortColumn)>0
                begin
                set @SortTable=substring(@strSortColumn,0,charindex('.',@strSortColumn))
                set @SortName=substring(@strSortColumn,charindex('.',@strSortColumn)+1,len(@strSortColumn))
                end
            else
                begin
                set @SortTable=@Tables
                set @SortName=@strSortColumn
                end
        
            select @type=t.name,@prec=c.prec
                from sysobjects o join syscolumns c on o.id=c.id
                join systypes t on c.xusertype=t.xusertype
                where o.name=@SortTable and c.name=@SortName
        
            if charindex('char',@type)>0
                set @type=@type+'('+cast(@prec as varchar)+')'
        
            declare @strPageSize varchar(50)
            declare @strStartRow varchar(50)
            declare @strFilter varchar(1000)
            declare @strSimpleFilter varchar(1000)
            declare @strGroup varchar(1000)
        
            /*默认当前页*/
            if @CurrentPage<1
                set @CurrentPage=1
        
            /*设置分页参数*/
            set @strPageSize=cast(@PageSize as varchar(50))
            set @strStartRow=cast(((@CurrentPage-1)*@PageSize+1) as varchar(50))
        
            /*筛选以及分组语句*/
            if @Filter is not null and @Filter!=''
                begin
                set @strFilter=' where '+@Filter+' '
                set @strSimpleFilter=' and '+@Filter +' '
                end
            else
                begin
                set @strSimpleFilter=''
                set @strFilter=''
                end
        
            if @Group is not null and @Group!=''
                set @strGroup=' group by '+@Group+' '
            else
                set @strGroup=''
        
            exec(
            ' declare @SortColumn '+ @type + ' set RowCount ' + @strStartRow
            + ' select @SortColumn=' + @strSortColumn + ' from ' + @Tables
            + @strFilter + ' ' + @strGroup + ' Order by ' + @Sort
            + ' set rowcount ' + @strPageSize + ' select ' + @Fields
            + ' from ' + @Tables + ' where ' + @strSortColumn + @operator
            + '@SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' Order by ' + @Sort + ' ')
        end
    else
        begin
            declare @strSQL varchar(5000)
            if @Filter !=''
                set @strSQL = 'select count(' + @PrimaryKey + ') as Total from [' + @Tables + '] where ' + @Filter
            else
                set @strSQL = 'select count(' + @PrimaryKey + ') as Total from [' + @Tables + ']'
            exec(@strSQL)
        end
go

然后再程序里调用存储过程
2007-12-26 15:39
梦灵儿
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:260
专家分:9
注 册:2007-8-7
得分:0 
我有例子.想上传.却上传失败了,说文件大了,恩你要是要加我的QQ:787825376我传你

2007-12-26 19:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-194089-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.075309 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved