##前提
一昨日にも似たような質問をさせて頂きました。
その際、頂いた回答を試したところ上手くいった部分と上手くいかない部分があったので再度質問をさせて頂きます。
###やりたい事
WPFでMVVMに則って、動的にDataGridへのバインドを行おうとしています。
データベースへSelectを行って取得した結果を何の加工もせずにDataGridへバインドがしたいです。
##困っている事
DataGridのItemsSourceプロパティにDataTable型の値をバインドした所、カラム名が表示されません。
##Code
DBからのデータ取得は以下のメソッドで取得しています。
このメソッド内のTableをそのままDataGridのItemsSourceへバインドしています。
C#
1public async Task GetDataTableAsync(string tableName) 2{ 3 using (var cn = new SqlConnection(_connection.ConnectionString)) 4 using (var cm = new SqlCommand("SELECT * FROM " + tableName, cn)) 5 { 6 await cn.OpenAsync(); 7 using (IDataReader reader = await cm.ExecuteReaderAsync()) 8 { 9 Table.BeginLoadData(); 10 Table.Clear(); 11 Table.Load(reader); 12 Table.EndLoadData(); 13 } 14 } 15} 16
ちなみに、このメソッド実行時にTwoColumnsテーブルを取得した時の結果は以下の様になっています。
上記のメソッドを実行する前に、TwoColumnsテーブルが持っている列名を自前で「ID」と「FullName」という列を追加してもう一度実行してみます。
そうすると、以下の様にバインドされる事が確認できました。しかし、持っている列はテーブル毎にそれぞれ違うので、固定した列を自分で追加したくありません。
C#
1Table.Columns.Add("ID"); 2Table.Columns.Add("FullName");
##他にも試した事
DataGridの AutoGenerateColumnsプロパティを"True"にしてみましたが、DataTableのカラム名を自動的にはセットしてくれませんでした。
##GitHub
以下にアップロードいたしましたので、どこが悪いのか指摘をお願い致します。
https://github.com/karimatan1106/MVVMDataGridBind
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。