Home >Backend Development >C++ >How to Implement Pagination in a WinForms DataGridView?

How to Implement Pagination in a WinForms DataGridView?

Linda Hamilton
Linda HamiltonOriginal
2024-12-31 14:56:10575browse

How to Implement Pagination in a WinForms DataGridView?

Implementing Pagination in a WinForm DataGridview

Pagination plays a crucial role in displaying large datasets by breaking them into smaller, manageable pages. In a Windows Form application, pagination allows users to navigate through a data grid view with ease. Here's how to achieve this functionality:

Using the BindingNavigator Control:

This approach involves using the BindingNavigator GUI control along with a BindingSource object. By setting the DataSource property of the BindingNavigator to a custom subclass of IListSource, page breaks can be defined. When the user clicks the "next page" button, the BindingNavigator fires the bindingSource1_CurrentChanged event. This event triggers your code to fetch the desired records for the current page.

Here's an example implementation using C#:

private const int totalRecords = 43;
private const int pageSize = 10;

public Form1()
{
    dataGridView1.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = "Index" });
    bindingNavigator1.BindingSource = bindingSource1;
    bindingSource1.CurrentChanged += new System.EventHandler(bindingSource1_CurrentChanged);
    bindingSource1.DataSource = new PageOffsetList();
}

private void bindingSource1_CurrentChanged(object sender, EventArgs e)
{
    int offset = (int)bindingSource1.Current;
    var records = new List<Record>();
    for (int i = offset; i < offset + pageSize && i < totalRecords; i++)
        records.Add(new Record { Index = i });
    dataGridView1.DataSource = records;
}

class PageOffsetList : System.ComponentModel.IListSource
{
    public bool ContainsListCollection { get; protected set; }

    public System.Collections.IList GetList()
    {
        var pageOffsets = new List<int>();
        for (int offset = 0; offset < totalRecords; offset += pageSize)
            pageOffsets.Add(offset);
        return pageOffsets;
    }
}

The above is the detailed content of How to Implement Pagination in a WinForms DataGridView?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn