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

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

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

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

C#

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

1回答

1573閲覧

C# DataGridの表示について

noritamago

総合スコア1

DataGrid

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

C#

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2020/05/01 07:36

C#のプログラミングの練習として、WPFで作成したフォームのなかで入力したSQLの
実行結果をDataGridに表示するプログラムを作ろうとしています。
DBへの接続は成功しており、InsertやDeleteはできているのですが、
SELECTの結果をDataGridに表示することができず困っています。

いろいろネットで調べていたのですが、一覧への表示はDataGridのほかにDataGridViewでも
できるという記事をよく見かけるので、DataGridViewで実装してみようかと思いましたが、
VisualStudioのツールボックス内にDataGridViewがないのでますます分からなくなっています。

ついては以下についてお聞きしたいと思います。
(1)DataGridで実装する場合の下記コードの実装方法として何が悪いのでしょうか。
(2)なぜVisualStudioのツールボックスにDataGridViewが表示されていないのでしょうか。

開発環境:VisualStudioCommunity2019
Framework:4.8.03752
接続DB:PostgreSQL

イメージ説明

■「SQL実行」ボタンをクリックしたときの処理

html

1 //「SQL実行」ボタンクリック 2 private void Run_SQL(object sender, RoutedEventArgs e) 3 { 4 //SQLの取得 5 String sSQL = txtSQL.Text.Trim(); 6 7 try { 8 //DELETE/INSERT/UPDATEの実行 9 if (sSQL.StartsWith("DELETE ") || sSQL.StartsWith("INSERT ") || sSQL.StartsWith("UPDATE ")) 10 { 11 cmd = new NpgsqlCommand(sSQL, con); 12 cmd.ExecuteNonQuery(); 13 } 14 //SELECT文の実行 15 else 16 { 17 dt = new DataTable(); 18 cmd = new NpgsqlCommand(sSQL, con); 19 da = new NpgsqlDataAdapter(cmd); 20 da.Fill(dt); 21 //DataGridにデータを格納 22 DispData.DataContext = da; 23 } 24 lblResult.Content = "SQL Run Successful !!"; 25 26 } 27 catch 28 { 29 lblResult.Content = "SQL Run Failed ..."; 30 } 31 }

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

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

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

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

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

Zuishin

2020/05/01 07:40

> DispData.DataContext = da; とりあえずここです。データアダプターをバインドしても仕方ありません。
退会済みユーザー

退会済みユーザー

2020/05/01 07:58

> (2)なぜVisualStudioのツールボックスにDataGridViewが表示されていないのでしょうか。 DataGridView は Windows Forms アプリ用だからです。WPF から方針変更して Windows Forms アプリにするのでしょうか?
退会済みユーザー

退会済みユーザー

2020/05/01 08:07

>(1)DataGridで実装する場合の下記コードの実装方法として何が悪いのでしょうか。 DispData.DataContext = da; を DispData.ItemsSource = dt.DefaultView; に変更してみたらどうなりますか?
noritamago

2020/05/01 09:05 編集

>>(1) ありがとうございます。 「DispData.ItemsSource = dt.DefaultView;」に変更することで表示できることを確認できました! >>(2) おっしゃる通りWindows Formsのほうで開いたらDataGridViewがありました。 調べた感じだとWPFがWindows Formsの後継、DataGridViewがDataGridの後継のようなイメージを持っていたので、なぜ古いWindows Formsのほうに新しいDataGridViewがあるんだとちょっと疑問に思いました。勘違いかもしれませんが。
退会済みユーザー

退会済みユーザー

2020/05/01 09:09

> 調べた感じだとWPFがWindows Formsの後継 そういうわけでもないと思います。適材適所でしょう。 > DataGridViewがDataGridの後継 それは Windows Forms アプリの中だけの話です。 問題が解決してこれ以上質問がなければ、質問者さんが回答欄に解決した方法を書いてベストアンサーを付けてこのスレッドはクローズしてください。
guest

回答1

0

自己解決

(1)

「DispData.DataContext = da;」を「DispData.ItemsSource = dt.DefaultView;」に
変更することで表示できることを確認できました。

(2)

DataGridはWPFアプリ用、DataGridViewはWindowsFormsアプリ用のため。

投稿2020/05/02 01:14

noritamago

総合スコア1

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

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

noritamago

2020/05/02 01:31

ベストアンサーボタンが見当たらなかったので自己解決という形で解決済みにしてしまいました。 ボタンの表示については運営に問合わせ中です。
Zuishin

2020/05/02 01:41

他に回答が無いのでベストアンサーボタンも無いと思います。「解決した方法」のような意味合いの書いたボタンがあったはずですが、それが自己解決のボタンです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問