winform中DataGridView实现分页功能
在winform的设计中,要实现对DataGridView控件的分页功能,需要两个控件:BindingSource、BindingNavigator,根据需求可对BindingNavigator进行自由的扩展,下图的示例则是根据一般需求对分页功能的实现。红区域是对BindingNavigator控件扩展后的效果。
具体实现过程 :
//窗体构造方法中定义分页所需变量:
int pageSize = 0; //每页显示行数
int nMax = 0; //总记录数
int pageCount = 0; //页数=总记录数/每页显示行数
int pageCurrent = 0; //当前页号
int nCurrent = 0; //当前记录行
DataTable dtInfo = new DataTable(); //存取查询数据结果
//分页功能实现
public void InitDataSet()
{
//判断每页显示记录数是否为空,在初始话窗体时为真
if (txtRecordNumOfPage.Text.Trim() == "")
{
try
{
//pageSize = Convert.ToInt16(ConfigurationManager.AppSettings["PageSize"]); //设置页面行数
//读取配置文件中设置的每页显示条数
string szConfigFileName = Application.ExecutablePath + ".config";
XmlDocument doc = new XmlDocument();
doc.Load(szConfigFileName);
XmlNode root = doc.SelectSingleNode("configuration");
XmlNode node = root.SelectSingleNode("appSettings/add[@key='PageSize']");
XmlElement el = node as XmlElement;
pageSize = Convert.ToUInt16(el.GetAttribute("value"));
}
catch
{
}
if (pageSize == 0)
{
湖南城市学院专业 pageSize = 20; //如果读取配置文件失败,则默认将每页显示条数设置为20
}
txtRecordNumOfPage.Text = pageSize.ToString(); //界面显示的“每页记录数”赋值
}
else
{
什么的小溪 //读取界面设置的每页显示条数
pageSize = Convert.ToUInt16(txtRecordNumOfPage.Text.Trim());
}
//总记录数赋值
nMax = dtInfo.Rows.Count;
pageCount = (nMax / pageSize); //采用整除计算页数
//判断整除后是否有余数,有则对页数进行+1
if ((nMax % pageSize) > 0) pageCount++;
pageCurrent = 1; //当前页数从1开始
nCurrent = 0; //当前记录数从0开始
qq怎么戳一戳 //调用显示数据方法
LoadData();山东高考报名网站
}
//显示数据方法
private void LoadData()
{
int nStartPos = 0; //当前页面开始记录行
int nEndPos = 0; //当前页面结束记录行
//判断查询结果是否为空
if (dtInfo.Rows.Count == 0)
{
dgvExperInfo.DataSource = null;
return;
}
else
{
钓钩的绑法 DataTable dtTemp = dtInfo.Clone(); //克隆DataTable结构,即将字段名称进行复制
if (pageCurrent == 1)
{
bindingNavigatorMoveFirstPage.Enabled = false;
bindingNavigatorMovePreviousPage.Enabled = false;
}
else
{
bindingNavigatorMoveFirstPage.Enabled = true;
bindingNavigatorMovePreviousPage.Enabled = true;
}
if (pageCurrent == pageCount)
{
nEndPos = nMax;
bindingNavigatorMoveLastPage.Enabled = false;
bindingNavigatorMoveNextPage.Enabled = false;
}
中班幼儿年龄特点 else
{
bindingNavigatorMoveLastPage.Enabled = true;
bindingNavigatorMoveNextPage.Enabled = true;
nEndPos = pageSize * pageCurrent;
}
nStartPos = nCurrent;
lblPageCount.Text = pageCount.ToString(); //界面显示总页数
lblCurrentPage.Text = Convert.ToString(pageCurrent);//当前页数
txtCurrentPage.Text = Convert.ToString(pageCurrent);//跳转到页数的显示
//从元数据源复制记录行
for (int i = nStartPos; i < nEndPos; i++)
{
dtTemp.ImportRow(dtInfo.Rows[i]);
nCurrent++;
}
bdsInfo.DataSource = dtTemp;
bdnInfo.BindingSource = bdsInfo;
dgvExperInfo.DataSource = bdsInfo;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论