ホームページ > バックエンド開発 > C++ > WinForms DataGridView でページネーションを実装するにはどうすればよいですか?

WinForms DataGridView でページネーションを実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-31 14:56:10
オリジナル
559 人が閲覧しました

How to Implement Pagination in a WinForms DataGridView?

WinForm DataGridview でのページネーションの実装

ページネーションは、大規模なデータセットを小さな管理しやすいページに分割して表示する際に重要な役割を果たします。 Windows フォーム アプリケーションでは、ページネーションにより、ユーザーはデータ グリッド ビュー内を簡単に移動できます。この機能を実現する方法は次のとおりです。

BindingNavigator コントロールの使用:

このアプローチには、BindingNavigator GUI コントロールと BindingSource オブジェクトの使用が含まれます。 BindingNavigator の DataSource プロパティを IListSource のカスタム サブクラスに設定することで、改ページを定義できます。ユーザーが「次のページ」ボタンをクリックすると、BindingNavigator によって bindingSource1_CurrentChanged イベントが発生します。このイベントは、現在のページに必要なレコードを取得するコードをトリガーします。

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;
    }
}
ログイン後にコピー

以上がWinForms DataGridView でページネーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート