winform中DataGridView实现分页功能
winformDataGridView实现分页功能 

        winform的设计中,要实现对DataGridView控件的分页功能,需要两个控件:BindingSourceBindingNavigator,根据需求可对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小时内删除。