• C#DataGridView分页显示数据


    #region DataGridView分页

    DataTable MiddleData = new DataTable();
    private void QueryBtn_Click(object sender, EventArgs e)
    {

    //查询RawData中符合条件的数据
    MiddleData = commData.Select(RawData, $"NewTime > '{dateTime1}' and NewTime < '{dateTime2}' ");


    PageSorter(MiddleData);
    dataGridView1.DataSource = FlipOverData;

    }

    /// <summary>
    /// 每页记录数
    /// </summary>
    public int pageSize = 22;

    /// <summary>
    /// 总记录数
    /// </summary>
    public int recordCount = 0;

    /// <summary>
    /// 总页数
    /// </summary>
    public int pageCount = 0;

    /// <summary>
    /// 当前页
    /// </summary>
    public int currentPage = 0;

    private void PageSorter(DataTable dataTable)
    {

    // 总记录数
    recordCount = dataTable.Rows.Count;
    // 总页数
    pageCount = recordCount / pageSize;
    if (recordCount % pageSize > 0)
    {
    pageCount++;
    }
    currentPage = 1;
    LoadPage(dataTable);
    }
    private void LoadPage(DataTable dataTable)
    {
    //当前页小于1时,当前页=1
    if (currentPage < 1) currentPage = 1;
    //当前页大于总页数时,当前页=总页数
    if (currentPage > pageCount) currentPage = pageCount;
    int beginRecord; //开始指针
    int endRecord; //结束指针
    DataTable dtTemp;
    //克隆 DataTable 的结构,包括所有 DataTable 架构和约束。
    dtTemp = dataTable.Clone();

    beginRecord = pageSize * (currentPage - 1);


    if (currentPage == 1) beginRecord = 0;

    endRecord = pageSize * currentPage;

    if (currentPage == pageCount) endRecord = recordCount;

    for (int i = beginRecord; i < endRecord; i++)
    {
    // dataTable.Rows[i] 复制到 dtTemp 中,保留任何属性设置以及初始值和当前值。
    dtTemp.ImportRow(dataTable.Rows[i]);
    }

    FlipOverData = dtTemp;


    labPageIndex.Text = "当前页: " + currentPage.ToString() + " / " + pageCount.ToString();//当前页
    labRecordCount.Text = "总行数: " + recordCount.ToString() + " 行";//总记录数
    }

    /// <summary>
    /// 记录翻页用到的数据
    /// </summary>
    public DataTable FlipOverData { get; set; }

    //首页
    private void FirstPagBtn_Click(object sender, EventArgs e)
    {
    if (currentPage == 1)
    { return; }
    currentPage = 1;
    LoadPage(MiddleData);
    dataGridView1.DataSource = FlipOverData;
    }

    //上一页
    private void UpPagBtn_Click(object sender, EventArgs e)
    {
    if (currentPage == 1)
    { return; }
    currentPage--;

    LoadPage(MiddleData);
    dataGridView1.DataSource = FlipOverData;

    }
    //下一页
    private void NextPagBtn_Click(object sender, EventArgs e)
    {
    if (currentPage == pageCount)
    { return; }
    currentPage++;

    LoadPage(MiddleData);
    dataGridView1.DataSource = FlipOverData;

    }
    //尾页
    private void LastPagBtn_Click(object sender, EventArgs e)
    {
    if (currentPage == pageCount)
    { return; }
    currentPage = pageCount;

    LoadPage(MiddleData);
    dataGridView1.DataSource = FlipOverData;

    }

    #endregion

  • 相关阅读:
    详解consul的安装和配置
    vs2017
    Android Bitmap 和 ByteArray的互相转换
    android中的byte数组转换(转)
    TensorFlow编译androiddemo
    Linux下命令行安装配置android sdk
    Warning: cast to/from pointer from/to integer of different size
    scribe 搭建遇到的问题
    参数依赖查找(ADL,Argument-dependent lookup)
    模板类继承后找不到父类函数的问题
  • 原文地址:https://www.cnblogs.com/z55w/p/13157811.html
Copyright © 2020-2023  润新知