Home >Backend Development >C++ >How to Implement Pagination in a WinForms 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!