回答編集履歴
1
追記
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)
|