質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1624閲覧

WPF 取得したCSVの指定した列をDataGridを表示させたい

MARINE_SeaDevil

総合スコア4

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2020/05/23 23:56

編集2020/05/24 06:10

CSVデータを取得して作業を実行したいが、一回タイトルや価格、画像URLのデータがある列だけを確認してから実行したい。
そのためにDataGridを使い指定した列だけを表示させたい。
ボタンに以下のコードを実装したがこの後が分かりません。

開発環境は
Visual Studio2019 バージョン16.5.4
.NET Framework バージョン4.8.03752
です。

CSVイメージ
|タイトル|価格|解説|発行年|画像|
|:--|:--:|--:|
|タイトル1|価格1|解説1|発行年1|画像1|
|タイトル2|価格2|解説1|発行年2|画像2|

.
.
.

↓(※の付いてる列だけDataGridに表示させたい)

|タイトル※|価格※|解説|発行年|画像※|
|:--|:--:|--:|
|タイトル1※|価格1※|解説1|発行年1|画像1※|
|タイトル2※|価格2※|解説1|発行年2|画像2※|

.
.
.

C#

1private void OpenFileDialogforCsv_Click(object sender, RoutedEventArgs e) 2 { 3 OpenFileDialog ofd = new OpenFileDialog(); 4 if(ofd.ShowDialog() == true) 5 { 6 string content = File.ReadAllText(ofd.FileName, Encoding.GetEncoding("Shift_JIS")); 7 DataTable dt = GetCsvDataTable(content); 8 this.dataGrid.ItemsSource = dt.DefaultView; 9 } 10 } 11 private DataTable GetCsvDataTable(string content){}

xamlはこういう形です。

xaml

1<StackPanel> 2 3 <Button Content="参照" 4 Height="40" Width="100" Margin="10" 5  FontSize="20" FontWeight="Bold" Background="SkyBlue" /> 6 7 <DataGrid Grid.Row="1" Name="dataGrid" Height="500" /> 8 9 <Button Content="作業実行" 10 Height="50" Width="200" Margin="25" Background="Orange" 11 FontSize="25" FontWeight="Bold" /> 12 13</StackPanel> 14

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/05/23 23:59

「要点」という独自用語を使わず、具体的にどんな入力に対してどんな出力を得たいか日本語で他人にわかりやすく説明することをお勧めします。
退会済みユーザー

退会済みユーザー

2020/05/24 01:36

「CSVの指定した行」って何をどのように指定するのですか? そこを書かないと、エスパーでもない限り、ここに書いてあること以外は知り得ない赤の他人の回答者は答えられないと思うのですが。 あと、開発環境(Visual Studio, .NET Framework のバージョンなど)も書くようにしましょう。
退会済みユーザー

退会済みユーザー

2020/05/24 02:26 編集

> ↓(※の付いてるセルだけDataGridに表示させたい) 「セル」ではなくて「列」に見えますが? 「列」でよければ「wpf datagrid 列 非表示」などをキーワードにググると参考になりそうな記事がヒットすると思いますが、やってみましたか? それが NG なら、今の GetCsvDataTable の中身が不明ですがそれを変更して、最初に必要な列だけ DataTable に取得するとか。 GetCsvDataTable がいじれないならそれで作ってしまった DataTable から列を削除してはいかがですか? DataTable の列削除は「datatable 列 削除」などをキーワードにググるといろいろヒットすると思います。
退会済みユーザー

退会済みユーザー

2020/05/24 06:06

> 間違えました、列ですね。 表題、質問文を編集して直してください。 上のコメントの提案にフィードバックしてください。ダメならどこが質問者さんの期待することと違うのかを書いてください。
guest

回答1

0

ベストアンサー

DataGridで対応する例です。

表示非表示の列が固定な場合は、xamlで列を指定してしまうのが早いです。

xml

1<DataGrid 2 Name="dataGrid" 3 Height="500" 4 AutoGenerateColumns="False"> 5 <DataGrid.Columns> 6 <DataGridTextColumn Binding="{Binding [0]}" Header="タイトル" /> 7 <DataGridTextColumn Binding="{Binding [1]}" Header="価格" /> 8 <DataGridTextColumn Binding="{Binding [4]}" Header="画像" /> 9 </DataGrid.Columns> 10</DataGrid>

表示非表示を切り替えるような場合は、コードから変更したほうが自由が利きます。

cs

1InitializeComponent(); 2 3dataGrid.AutoGeneratedColumns += (s, e) => 4{ 5 dataGrid.Columns[2].Visibility = Visibility.Hidden; 6 dataGrid.Columns[3].Visibility = Visibility.Hidden; 7};

DataGrid.AutoGeneratingColumn イベント (System.Windows.Controls) | Microsoft Docs
こっちを使ってもよい。


datatable 列 削除」のほうはズバリなものが出ますので省略します。

「wpf datagrid 列 非表示」はバインディングする等凝ったものは出ますが、単純なものは意外といいのがないですね。

投稿2020/05/24 13:57

編集2023/07/22 06:59
TN8001

総合スコア9862

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問