質問編集履歴
1
解決したので最終的なコードを載せておきます
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
いつもお世話になっております。
|
2
2
|
いつも回答して頂き助かっています
|
3
3
|
|
4
|
+
回答を頂いて無事解決しました。
|
5
|
+
最終的なコードは1番下に載せています
|
6
|
+
|
7
|
+
|
8
|
+
|
4
9
|
開発環境は以下の通りです
|
5
10
|
VS2017
|
6
11
|
NETFramework,Version=v4.5.21
|
@@ -69,4 +74,30 @@
|
|
69
74
|
|
70
75
|
|
71
76
|
```
|
72
|
-
上記のValiate~メソッドがプロパティごとにあります。
|
77
|
+
上記のValiate~メソッドがプロパティごとにあります。
|
78
|
+
|
79
|
+
以下が解決した最終的なコードです。
|
80
|
+
Valiate~メソッドを作る必要がなくなりました
|
81
|
+
```C#
|
82
|
+
private void _dgv_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
|
83
|
+
{
|
84
|
+
dynamic cellEx = _dgv[e.ColumnIndex, e.RowIndex];
|
85
|
+
|
86
|
+
var names = _dgv.Columns[e.ColumnIndex].Name.Split('-'); // 0 クラス名、1 プロパティ名
|
87
|
+
typeof(U).GetProperty(names[1]).SetValue(_validationObject, e.FormattedValue);
|
88
|
+
var errors = _db.Entry(_validationObject).Property(names[1]).GetValidationErrors();
|
89
|
+
|
90
|
+
cellEx.ErrorText = "";
|
91
|
+
foreach (var err in errors)
|
92
|
+
{
|
93
|
+
cellEx.ErrorText += err.ErrorMessage + "\n";
|
94
|
+
}
|
95
|
+
if (errors.Count != 0)
|
96
|
+
{
|
97
|
+
cellEx.ErrorText = cellEx.ErrorText.TrimEnd('\n');
|
98
|
+
e.Cancel = true;
|
99
|
+
_dgv.EndEdit();
|
100
|
+
_dgv.InvalidateCell(cellEx);
|
101
|
+
}
|
102
|
+
}
|
103
|
+
```
|