ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

C# DataGridViewのソートとフィルタのサンプル

WindowsFormでのDataGridViewのソートとフィルタのサンプルです。

こちらの2つの記事を参考にさせていただきました。

【C#入門】DataTableの使い方(Select、Sort、Compute、LINQも解説) | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト

DataGridコントロールで並び替え順やフィルタを指定するには?:.NET TIPS - @IT


外観はこんな感じ。

f:id:moko_03_25:20181004002856j:plain

コードはこんな感じ。

Formpublic partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    // データセットを作成
    DataSet dataSet = new DataSet("タスク管理");

    // データテーブルを作成
    DataTable table = new DataTable("Table");

    private void Form1_Load(object sender, EventArgs e)
    {
        // データテーブルに列を追加 table.Columns.Add("カテゴリ");
        table.Columns.Add("内容");
        table.Columns.Add("優先度");
        table.Columns.Add("進捗");

        // データセットにデータテーブルを追加
        dataSet.Tables.Add(table);

        // テーブルにデータを追加
        table.Rows.Add("要望", "レベル", "低", "進行中");
        table.Rows.Add("バグ", "固まる", "高", "進行中");
        table.Rows.Add("追加", "ボタン", "中", "未着手");
        table.Rows.Add("要望", "入力欄", "高", "完了");
        table.Rows.Add("バグ", "止まる", "中", "進行中");
        table.Rows.Add("バグ", "落ちる", "低", "未着手");
        table.Rows.Add("追加", "設定済", "高", "完了");
        table.Rows.Add("要望", "最前面", "中", "完了");

        // データグリッドにテーブルを表示する
        this.dgv.DataSource = table;
    }

    // ボタン「Sort」を押す
    private void button1_Click(object sender, EventArgs e)
    {
        // ソートの指定
        table.DefaultView.Sort = "カテゴリ ASC";
    }

    // ボタン「Filter」を押す
    private void button2_Click(object sender, EventArgs e)
    {
        // フィルタの指定
        table.DefaultView.RowFilter = "進捗 <> '完了'";
    }
}

 

「Sotr」ボタンを押した場合。カテゴリ欄が昇順でソートされました。

f:id:moko_03_25:20181004002900j:plain

「Filter」ボタンを押した場合。進捗が完了のもの以外を表示しました。

f:id:moko_03_25:20181004002905j:plain

ひとまずメモでした!