>백엔드 개발 >C++ >Windows Forms DataGridView에서 페이지 매김을 구현하는 방법은 무엇입니까?

Windows Forms DataGridView에서 페이지 매김을 구현하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-27 18:05:15940검색

How to Implement Pagination in a Windows Forms DataGridView?

Windows Forms DataGridView의 페이지 매김 구현

Windows Forms에서는 사용자 친화성을 유지하면서 대규모 데이터 세트를 효율적으로 표시해야 합니다. 페이지 매김을 사용하면 사용자는 데이터 레코드를 페이지로 표시되는 더 작은 하위 집합으로 나누어 데이터 레코드를 탐색할 수 있습니다. 이 문서에서는 Windows 양식 내의 DataGridView 컨트롤에서 페이지 매김을 수행하는 방법을 살펴봅니다.

사용자 지정 컨트롤과 DataGridView 속성

DataGridView 구성 요소는 기본 제공 속성을 제공하지 않습니다. 페이지 매김 기능. 따라서 사용자 정의 컨트롤을 만들 필요가 없습니다. 대신 페이지 나누기를 지원하는 사용자 정의 데이터 소스와 함께 BindingNavigator 컨트롤을 활용할 수 있습니다.

구현:

아래 코드 조각은 DataGridView:

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();
}

PageOffsetList 클래스는 사용자 정의 IListSource를 제공합니다. 총 레코드 수와 원하는 페이지 크기를 기반으로 페이지 오프셋 목록을 반환합니다. 사용자가 BindingNavigator의 "다음 페이지" 버튼을 클릭하면 바인딩Source1_CurrentChanged 이벤트가 트리거됩니다.

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

이벤트 핸들러 내에서 현재 페이지 오프셋이 검색되어 원하는 레코드 페이지를 가져오는 데 사용됩니다. . 그런 다음 가져온 레코드는 DataGridView 컨트롤에 바인딩되어 다음 페이지를 효과적으로 표시합니다.

결론:

BindingNavigator와 페이지 매김을 지원하는 사용자 정의 데이터 소스를 활용하면 Windows 형식의 DataGridView 컨트롤 내에 페이지 매김 기능을 구현했습니다. 이 접근 방식을 사용하면 대규모 데이터 세트를 효율적으로 탐색하여 사용자 경험을 향상하고 데이터 조작을 보다 쉽게 ​​관리할 수 있습니다.

위 내용은 Windows Forms DataGridView에서 페이지 매김을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.