C#winform有什么好的针对dataGridView的分页控件吗?(海量数据)像asp.net中的AspNetPager那样的控件

sw19810913 2010-11-20 10:36:00
如题


我知道asp.net有AspNetPager分页控件,很好用,传值,然后直接绑定grieview数据

ado.net 中针对dataGridView有没有这样的控件啊?

...全文
500 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
garfieldzf 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 sw19810913 的回复:]
如题


我知道asp.net有AspNetPager分页控件,很好用,传值,然后直接绑定grieview数据

ado.net 中针对dataGridView有没有这样的控件啊?
[/Quote]

自定义控件
flyerwing 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fangxinggood 的回复:]
BindingNavigator 控件,不过效果没有那么多可选的。
Winform下自己做一个也不难。不像Web的考虑的东西多。
[/Quote]
呵呵,winform那东西实用性不高,不过以前见过有!自己找吧.
taolinsen 2010-11-22
  • 打赏
  • 举报
回复
分页确实不难,但一般的Winform下是不做分页的吧。
cdggg 2010-11-21
  • 打赏
  • 举报
回复
我进来学习一下
peterb 2010-11-21
  • 打赏
  • 举报
回复
peng2739956 2010-11-20
  • 打赏
  • 举报
回复
对了 当然 还需要DataGridView、BindingNavigate、BindingSource控件才行。
peng2739956 2010-11-20
  • 打赏
  • 举报
回复

//1、定义几个所需的公有成员
int pageSize = 0;     //每页显示行数        
int nMax = 0;         //总记录数        
int pageCount = 0;    //页数=总记录数/每页显示行数        
int pageCurrent = 0;   //当前页号       
 int nCurrent = 0;      //当前记录行        
DataSet ds = new DataSet();        
DataTable dtInfo = new DataTable();

//2、在窗体载入事件中,从数据源读取记录到DataTable中
string strConn = "SERVER=127.0.0.1;DATABASE=NORTHWIND;UID=SA;PWD=ULTRATEL";   
//数据库连接字符串           
SqlConnection conn = new SqlConnection(strConn);            
conn.open();           
string strSql = "SELECT * FROM CUSTOMERS";            
SqlDataAdapter sda = new SqlDataAdapter(strSql,conn);            
sda.Fill(ds,"ds");            
conn.Close();            
dtInfo = ds.Tables[0];            
InitDataSet();

//3、用当前页面数据填充DataGridView
private void InitDataSet()        
{            
pageSize = 20;      //设置页面行数            
nMax = dtInfo.Rows.Count;            
pageCount=(nMax/pageSize);    //计算出总页数            
if ((nMax % pageSize) > 0) pageCount++;           
pageCurrent = 1;    //当前页数从1开始            
nCurrent = 0;       //当前记录数从0开始            
LoadData();        
}
private void LoadData()        
{            
int nStartPos = 0;   //当前页面开始记录行            
int nEndPos = 0;     //当前页面结束记录行            
DataTable dtTemp = dtInfo.Clone();   //克隆DataTable结构框架            
if (pageCurrent == pageCount)                
nEndPos = nMax;            
else                
nEndPos = pageSize * pageCurrent;            
nStartPos = nCurrent;            
lblPageCount.Text = pageCount.ToString();            
txtCurrentPage.Text = Convert.ToString(pageCurrent);    //从元数据源复制记录行            
for (int i = nStartPos; i < nEndPos; i++)            
{                
dtTemp.ImportRow(dtInfo.Rows[i]);                
nCurrent++;            
}            
bdsInfo.DataSource = dtTemp;            
bdnInfo.BindingSource = bdsInfo;            
dgvInfo.DataSource = bdsInfo;        
}
//4、菜单响应事件
private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)        
{            
if (e.ClickedItem.Text == "关闭")            
{                
this.Close();            
}            
if (e.ClickedItem.Text == "上一页")            
{                
pageCurrent--;                
if (pageCurrent <= 0)                
{                    
MessageBox.Show("已经是第一页,请点击“下一页”查看!");                    .
return;                
}                
else                
{                    
nCurrent = pageSize * (pageCurrent - 1);                
}                
LoadData();           
 }            
if (e.ClickedItem.Text == "下一页")            
{                
pageCurrent++;                
if (pageCurrent > pageCount)                
{                    
MessageBox.Show("已经是最后一页,请点击“上一页”查看!");                    
return;                
}                
else                
{                    
nCurrent=pageSize*(pageCurrent-1);                
}                
LoadData();            
}        
}

这样就可以实现分页了 不过代码写起来比较麻烦而已
机器人 2010-11-20
  • 打赏
  • 举报
回复
BindingNavigator 控件,不过效果没有那么多可选的。

Winform下自己做一个也不难。不像Web的考虑的东西多。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧