質問編集履歴
1
解決したので最終的なコードを載せておきます
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,6 +4,16 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
+
回答を頂いて無事解決しました。
|
8
|
+
|
9
|
+
最終的なコードは1番下に載せています
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
7
17
|
開発環境は以下の通りです
|
8
18
|
|
9
19
|
VS2017
|
@@ -141,3 +151,55 @@
|
|
141
151
|
```
|
142
152
|
|
143
153
|
上記のValiate~メソッドがプロパティごとにあります。
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
以下が解決した最終的なコードです。
|
158
|
+
|
159
|
+
Valiate~メソッドを作る必要がなくなりました
|
160
|
+
|
161
|
+
```C#
|
162
|
+
|
163
|
+
private void _dgv_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
|
164
|
+
|
165
|
+
{
|
166
|
+
|
167
|
+
dynamic cellEx = _dgv[e.ColumnIndex, e.RowIndex];
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
var names = _dgv.Columns[e.ColumnIndex].Name.Split('-'); // 0 クラス名、1 プロパティ名
|
172
|
+
|
173
|
+
typeof(U).GetProperty(names[1]).SetValue(_validationObject, e.FormattedValue);
|
174
|
+
|
175
|
+
var errors = _db.Entry(_validationObject).Property(names[1]).GetValidationErrors();
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
cellEx.ErrorText = "";
|
180
|
+
|
181
|
+
foreach (var err in errors)
|
182
|
+
|
183
|
+
{
|
184
|
+
|
185
|
+
cellEx.ErrorText += err.ErrorMessage + "\n";
|
186
|
+
|
187
|
+
}
|
188
|
+
|
189
|
+
if (errors.Count != 0)
|
190
|
+
|
191
|
+
{
|
192
|
+
|
193
|
+
cellEx.ErrorText = cellEx.ErrorText.TrimEnd('\n');
|
194
|
+
|
195
|
+
e.Cancel = true;
|
196
|
+
|
197
|
+
_dgv.EndEdit();
|
198
|
+
|
199
|
+
_dgv.InvalidateCell(cellEx);
|
200
|
+
|
201
|
+
}
|
202
|
+
|
203
|
+
}
|
204
|
+
|
205
|
+
```
|