回答編集履歴

1

追記

2021/09/11 05:59

投稿

退会済みユーザー
test CHANGED
@@ -451,3 +451,117 @@
451
451
 
452
452
 
453
453
  ![イメージ説明](fe6031b85072d68070d574b08f158d45.jpeg)
454
+
455
+
456
+
457
+ **【追記】**
458
+
459
+
460
+
461
+ YAmaGNZ さんの質問欄のコメントを見て思ったのですが、MainWindow のコンストラクタの CreateDataTable() で生成した DataTable は DataGrid に表示できているが、imp_button_Click メソッドで DataTable を再生成しても、DataGrid には再生成結果が反映されないという話なのかな?
462
+
463
+
464
+
465
+ そうであれば、上の回答の MainWindow.xaml.cs のコードで書いたように、コードで明示的に DataGrid.ItemsSource に DataTable.DefaultView を設定してみたらどうなりますか?
466
+
467
+
468
+
469
+ 先の MainWindow.xaml.cs のコードに手を加えて、コンストラクタでダミーの DataTable を作ってそれを DataGrid に表示した後、Button クリックで DataTable を差し替えるということを試してみましたが、期待通りに差し替えることができます。お試しください。
470
+
471
+
472
+
473
+ ```C#
474
+
475
+ // ・・・前略・・・
476
+
477
+
478
+
479
+ testDatabaseService = provider.GetRequiredService<TestDatabaseService>();
480
+
481
+
482
+
483
+ this.dataGrid2.ItemsSource = CreateDataTable().DefaultView;
484
+
485
+ }
486
+
487
+
488
+
489
+ private async void Button1_Click(object sender, RoutedEventArgs e)
490
+
491
+ {
492
+
493
+ var table = await testDatabaseService.GetDataTableAsync();
494
+
495
+ this.dataGrid2.ItemsSource = table.DefaultView;
496
+
497
+ }
498
+
499
+
500
+
501
+ private async void MainWindow_Loaded(object sender, RoutedEventArgs e)
502
+
503
+ {
504
+
505
+ var list = await testDatabaseService.GetListAsync();
506
+
507
+ this.dataGrid.ItemsSource = list;
508
+
509
+
510
+
511
+ //var table = await testDatabaseService.GetDataTableAsync();
512
+
513
+ //this.dataGrid2.ItemsSource = table.DefaultView;
514
+
515
+ }
516
+
517
+
518
+
519
+ private DataTable CreateDataTable()
520
+
521
+ {
522
+
523
+ var table = new DataTable();
524
+
525
+ table.Columns.Add(new DataColumn("Num", typeof(int)));
526
+
527
+ table.Columns.Add(new DataColumn("Name", typeof(string)));
528
+
529
+ for (int i = 0; i < 3; i++)
530
+
531
+ {
532
+
533
+ var row = table.NewRow();
534
+
535
+ row["Num"] = i;
536
+
537
+ row["Name"] = $"Name{i}";
538
+
539
+ table.Rows.Add(row);
540
+
541
+ }
542
+
543
+ return table;
544
+
545
+ }
546
+
547
+ }
548
+
549
+ }
550
+
551
+ ```
552
+
553
+
554
+
555
+ 初期表示:
556
+
557
+
558
+
559
+ ![イメージ説明](7a8103d2ba625ba893dc5c5e80079c9f.jpeg)
560
+
561
+
562
+
563
+ Button クリックで:
564
+
565
+
566
+
567
+ ![イメージ説明](d91f03fffa0208dd014605d41e892dff.jpeg)