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

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

新規登録して質問してみよう
ただいま回答率
85.37%
C#

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

XAML

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

WPF

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

Q&A

解決済

2回答

4606閲覧

WPF:MySQLで取得したデータをDataGridで縦に表示させたい

ryota1017stars

総合スコア21

C#

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

XAML

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

WPF

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

0グッド

0クリップ

投稿2020/04/21 11:56

MySQLから取り出したデータを、

Col0 Col1 Col2 Col3 | 1 | 2 | 3 | 4 | | 1 | 2 | 3 | 4 |

下記のように縦に表示させたいです。

Col0 | 1 | 1 | Col1 | 2 | 2 | Col2 | 3 | 3 | Col3 | 4 | 4 |

その後、行ヘッダーに任意のテキストの表示も追加したいです。

text1 text2 Col0 | 1 | 1 | Col1 | 2 | 2 | Col2 | 3 | 3 | Col3 | 4 | 4 |

現状はこの画像のように、行にカラム名が表示されています。

イメージ説明

DbTest.xaml.cs

c#

1public partial class DbTest : Page 2 { 3 4 public DbTest() 5 { 6 InitializeComponent(); 7 8 string sLogin = "login data;"; 9 MySqlConnection conn = new MySqlConnection(sLogin); 10 11 try 12 { 13 conn.Open(); 14 MySqlCommand cmd = new MySqlCommand("select * from tablename where id = 2", conn); 15 MySqlDataAdapter adp = new MySqlDataAdapter(cmd); 16 DataSet ds = new DataSet(); 17 adp.Fill(ds, "LoadDataBinding"); 18 19 DataContext = ds; 20 } 21 catch (MySqlException ex) 22 { 23 MessageBox.Show(ex.ToString()); 24 } 25 finally 26 { 27 conn.Close(); 28 } 29 } 30 } 31}

DbTest.xaml

xaml

1<Grid Height="350" Width="625" Background="#FFD1F9EE" > 2 <TextBlock Height="32" HorizontalAlignment="Left" Margin="16,15,0,0" Name="textBlockHeading" Text="Test2" VerticalAlignment="Top" Width="310" FontSize="20" FontStretch="Normal"/> 3 <Grid HorizontalAlignment="Left" Height="310" VerticalAlignment="Top" Width="625"> 4 <DataGrid AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="14,55,0,46" Name="dataGridCustomers" Width="575" ItemsSource="{Binding Path=LoadDataBinding}" CanUserResizeRows="False"> 5 <DataGrid.Columns> 6 <DataGridTextColumn Binding="{Binding Path=id}" Header="id" Width="100" IsReadOnly="True" /> 7 <DataGridTextColumn Binding="{Binding Path=data}" Header="data" Width="100" IsReadOnly="True" /> 8 </DataGrid.Columns> 9 <DataGrid.RowHeaderTemplate> 10 <DataTemplate> 11 <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, 12 AncestorType={x:Type DataGridRow}}, 13 Path=Item.Header}"/> 14 </DataTemplate> 15 </DataGrid.RowHeaderTemplate> 16 </DataGrid> 17 </Grid> 18 </Grid>

ここまではこちらのリンク先の情報を参考にしました。
https://stackoverflow.com/questions/4791929/wpf-datagrid-rowheader-databinding

(データバインドして列ヘッダーにテキストを表示させるようですが、ListやArrayにして渡しても、列ヘッダーに表示されず・・・)

・MySQLから取り出した情報をDataGridで縦に表示させる方法
・その後、行ヘッダーにテキストを表示させる方法

こちらについて、アドバイスいただければと思います。
宜しくお願い致します。

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

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

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

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

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

Zuishin

2020/04/21 12:28

DataTable をもう一つ作って、取り出したものをそれにセットするのが簡単だと思います。
guest

回答2

0

自己解決

columnNameに行ヘッダーに設定したい文字列を格納してDataTableに追加していきました。

c#

1MySqlCommand cmd = new MySqlCommand("select * from table, connection); 2MySqlDataReader rdr = cmd.ExecuteReader(); 3 4string[] columnName = new string[2] { "id", "value" } 5 6var table = new DataTable(); 7table.Columns.Add("列ヘッダー1"); 8table.Columns.Add("列ヘッダー2"); 9 10while (rdr.Read()) 11{ 12 for (int i = 0; i < 2; i++) 13 { 14 var row = table.NewRow(); 15 row[0] = columnName[i]; 16 row[1] = rdr[i]; 17 table.Rows.Add(row); 18 } 19}

投稿2020/04/23 13:14

ryota1017stars

総合スコア21

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

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

0

投稿2020/04/21 12:02

編集2020/04/21 12:03
m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問