WinForm下如何进行分页显示? WinForm下如何进行分页显示,因为需要显示的数据很多,故想采取分页的方式显示。可以前没有这样做过,请大家帮忙,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据有多少呢,GridView之类的控件本身就有分页的功能吧 我常用的方法是1 让用户必须选择一个条件进行过滤。2 选择前N行。分页可以用SQL语句实现,页码是动态生成的。这在BS下很容易实现(加个超链接就可以了),CS不好实现。 /// <summary> /// 分页计算部分 /// </summary> private void InitDataSet() { pageSize = 10; nMax = dtInfo.Rows.Count; pageCount = (nMax / pageSize); //计算出总页数 if ((nMax % pageSize) > 0) pageCount++; pageCurrent = 1; //当前页数从1开始 nCurrent = 0; //当前记录数从0开始 LoadData(); } /// <summary> /// 分页数据部分 /// </summary> 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; } /// <summary> /// 分页UI部分 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Text == "上一页") { pageCurrent--; if (pageCurrent <= 0) { pageCurrent++; MessageBox.Show("已经是第一页,请点击“下一页”查看!"); return; } else { nCurrent = pageSize * (pageCurrent - 1); } LoadData(); } if (e.ClickedItem.Text == "下一页") { pageCurrent++; if (pageCurrent > pageCount) { pageCurrent--; MessageBox.Show("已经是最后一页,请点击“上一页”查看!"); return; } else { nCurrent = pageSize * (pageCurrent - 1); } LoadData(); } }前台控件: private System.Windows.Forms.DataGridView dgvInfo; private System.Windows.Forms.BindingSource bdsInfo; private System.Windows.Forms.BindingNavigator bdnInfo; private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem;其他内容自行搜索 请参考winform下的分页控件 思路:1、SQL语句分页,用Datagridview绑定结果集。2、界面的上一页、下一页之内的可以做个用户控件,点击按钮背后执行sql返回结果集绑定。3、可以写个存储过程来完成分页功能,界面只负责接收参数,然后调用这个存储过程即可。 webform会用存储过程进行分页,winform就不会了? 本地有一个当前页curIndex,每页显示的行数rowPerPage,两个翻页按钮,初始化都是Enable = false,查询时将两个数字传到后台进行翻页查询,常见关系型数据库都支持行数的选择 http://blog.csdn.net/xianfajushi/article/details/7015535 gridview本身就自带分页功能的 http://download.csdn.net/detail/wolf_y/5034872 文件操作问题。。。。 求oledb.net插入10000条记录的时间测试数据 打开对话框,选择文件,得到这个文件的路径,并关闭这个对话框 数字金子塔问题 vs2005有没有类似JBuilder那种快速生成JavaBean的属性编辑器 对象序列化Json问题,Newtonsoft.Json JsonProperty 控件在移动时,如何高效重绘背景? 使用SQLDMO备份SQL出错 请问哪里可以找到.Net Framework,MSDN上有吗? 怎样实性这一区域带黑色,又模糊可看 水晶报表 不显示? 如何把ListBox中选中的一项加到List集合中?
1 让用户必须选择一个条件进行过滤。
2 选择前N行。分页可以用SQL语句实现,页码是动态生成的。这在BS下很容易实现(加个超链接就可以了),CS不好实现。
/// 分页计算部分
/// </summary>
private void InitDataSet()
{
pageSize = 10;
nMax = dtInfo.Rows.Count; pageCount = (nMax / pageSize); //计算出总页数 if ((nMax % pageSize) > 0) pageCount++; pageCurrent = 1; //当前页数从1开始
nCurrent = 0; //当前记录数从0开始 LoadData();
}
/// <summary>
/// 分页数据部分
/// </summary>
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;
}
/// <summary>
/// 分页UI部分
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bdnInfo_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{ if (e.ClickedItem.Text == "上一页")
{
pageCurrent--;
if (pageCurrent <= 0)
{
pageCurrent++;
MessageBox.Show("已经是第一页,请点击“下一页”查看!");
return;
}
else
{
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();
}
if (e.ClickedItem.Text == "下一页")
{
pageCurrent++;
if (pageCurrent > pageCount)
{
pageCurrent--;
MessageBox.Show("已经是最后一页,请点击“上一页”查看!");
return;
}
else
{
nCurrent = pageSize * (pageCurrent - 1);
}
LoadData();
}
}
前台控件:
private System.Windows.Forms.DataGridView dgvInfo;
private System.Windows.Forms.BindingSource bdsInfo;
private System.Windows.Forms.BindingNavigator bdnInfo;
private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator;
private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem;
其他内容自行搜索
1、SQL语句分页,用Datagridview绑定结果集。
2、界面的上一页、下一页之内的可以做个用户控件,点击按钮背后执行sql返回结果集绑定。
3、可以写个存储过程来完成分页功能,界面只负责接收参数,然后调用这个存储过程即可。