0
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のDataGridの行を取得する方法

Last updated at Posted at 2022-05-02

はじめに

初めまして、現在大学3年生でWindowsのアプリケーション開発を行なっております。

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

今回は、選択してる行を取得する方法を書いていきたいと思います。

今回やりたいこと

DataGridから列を複数選択し、それぞれのデータを取得したいと考えています。

今回は以下のようなデータを使用したいと思います。

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

取得した上でtextboxに取得したものを代入するプログラムを作る設定でプログラムを書いていきます。

複数行取得した際には、「,(カンマ)」で続けて書きたいと思います。

DataGeidの行を取得する方法

今回使用する上で必要なデータの型

DataGridのColumn名が入ったリストを使用します。

今回は以下の情報が入ったリストです。

ID 店名 前回の連絡日付 次回の連絡日付 担当者
MainWindow.xaml.cs
private List<string> Column_list = new List<string>();

Xamlの情報

今回のXamlには、DataGridとID, 店名、前回の連絡日付、次回の連絡日付、担当者のTextBoxがあるとします。

MainWindow.xaml
<DataGrid/>
<TextBox x:Name="ID_textbox"/>
<TextBox x:Name="Shop_textbox"/>
<TextBox x:Name="pre_day_textbox"/>
<TextBox x:Name="post_day_textbox"/>
<TextBox x:Name="manager"/>

取得する方法

foreachを利用して、一行一行選択した項目の中身を確認します。

MainWindow.xaml.cs
foreach (var row in this.datagrid.SelectedItems)

現在選択している行のうち、header_strと同じ列を取得します。
この時、行を取得する方法としてDataRowViewを使用します。

MainWindow.xaml.cs
var row_data = (row as DataRowView)[header_str];
MainWindow.xaml.cs
private void row_get()
{
   string[] row_list = [Column_list.Count()]
   foreach (var row in this.datagrid.SelectedItems)
   {
      int i = 0;
      int j = 0;
      foreach (string column in Column_list)
      {
         if(j!= 0)
            row_list[i] += ", ";        
         var row_data = (row as DataRowView)[header_str];
         row_list[i] += row_data.ToString();
         i++;
      }
      j++;
   }
   this.ID_textbox.Text = row_data[0];
   this.Shop_textbox.Text = row_data[1];
   this.pre_day_textbox.Text = row_data[2];
   this.post_day_textbox.Text = row_data[3];
   this.manager_textbox.Text = row_data[4];
}

プログラム結果

例えば、DataGridの一行目、二行目を選択すると、textboxの中身は以下のようになります。

ID	      1, 2
店名	      俺のリップクリーム, 俺のスマホ
前回の連絡日付 2022-3-18, 2022-3-18
次回の連絡日付 2022-3-22, 2022-3-22
担当者     山田太郎, 高橋花子
0
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
0
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?