2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WPFのListView(DataGrid)の検索機能

Last updated at Posted at 2022-05-02

はじめに

今回は WPF と呼ばれるWindowsアプリケーション用に使用するフレームワークで使用するC#の記事になります。
WPFを使用する際には、UIの作成にXAML、クリックイベントやバックエンドにC#と言語を分けて作成します。

今回やりたいこと

WPFのListView(DataGrid)で、取得したい情報をTextBoxから取得し、取得できた情報をListViewの選択した状態で返すプログラムを作成します。

なぜこのようなプログラムが必要なのか

ListViewで表示されている情報から、欲しいデータを取得することを目的とします。
しかし今回は、View表示している元データを保持していないので、Viewに表示している情報から検索をしたいと考えています。

実際に苦労したこと

List表示の際に、Itemsourceを利用すると思うが、そのデータをパブリック変数として保持せずに、ListView(DataGrid)内のメソッドで完結させるのが、苦労しました。

WPFのListView(DataGrid)の検索機能追加

今回使うデータ

今回使用するデータは以下のようになっているとします。

ID 店名 前回の連絡日付 次回の連絡日付 担当者
1 俺のリップクリーム 2022-3-18 2022-3-22 山田太郎
2 俺のスマホ 2022-3-18 2022-3-22 高橋花子
3 俺の天津飯 2022-3-18 2022-3-23 ああ二郎
5 俺のチャオズ 2022-3-18 2022-3-23 ああ二郎
7 俺のヤムチャ 2022-3-18 2022-3-23 サブロー

今回取得したい情報は入力したIDから、一致する列データを選択状態にするということをしたいと思います。

listcolumns.cs
public void class Listitems
{
    public int id {get; set;}
    public string shop_name { get; set; }
    public string pre_date { get; set; }
    public string next_data { get; set; }
    public string people { get; set; }
}

追加方法

ラムダ式を用いて、取得します。
numには、idを取得し、foundでは、条件に一致するデータの列情報を取得します。

Example.cs
num = Int32.Parse(textbox.text);
var found = listview.Items.Cast<Listitems>().Where(row => row.id == num).ToList();

listview.SelectedItems.Add(found[0]);

found[0]にしているのは、一行目のみ取得するためである。
もし複数の情報を取得したい場合はforeach文で回すと取得できると思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?