回答編集履歴
2
C# と VB\.NET のコードを併記
answer
CHANGED
@@ -48,13 +48,20 @@
|
|
48
48
|
|
49
49
|
(3) SqlDataSource.Updating イベントのハンドラ(メソッド)を作成。その中で FormView1_ItemUpdating メソッドの修正版で行ったように、FindControl で DropDownList を取得し、SelectedValue を取得し、point を計算する。
|
50
50
|
|
51
|
-
(4) 上記 (3) に続いて、ハンドラの引数 SqlDataSourceCommandEventArgs オブジェクトからパラメータを取得し、その Value プロパティに point と dtToday を代入する。以下のような感じです。
|
51
|
+
(4) 上記 (3) に続いて、ハンドラの引数 SqlDataSourceCommandEventArgs オブジェクトからパラメータを取得し、その Value プロパティに point と dtToday を代入する。以下のような感じです。(訂正:C# と VB.NET のコードを併記しました)
|
52
52
|
|
53
|
+
C#
|
53
54
|
```
|
54
|
-
e.Command.Parameters["@point"].Value = point
|
55
|
+
e.Command.Parameters["@point"].Value = point;
|
55
|
-
e.Command.Parameters["@date"].Value = dtToday
|
56
|
+
e.Command.Parameters["@date"].Value = dtToday;
|
56
57
|
```
|
57
58
|
|
59
|
+
VB.NET
|
60
|
+
```
|
61
|
+
e.Command.Parameters("@point").Value = point
|
62
|
+
e.Command.Parameters("@date").Value = dtToday
|
63
|
+
```
|
64
|
+
|
58
65
|
(5) FormView1_ItemUpdating メソッドは不要なので削除(とりあえずコメントアウトしてください)。
|
59
66
|
|
60
67
|
上記は頭の中で考えただけで、当方では検証してません(できません)。質問者さんの方でやってみて結果を連絡ください。
|
1
具体的方法の追記
answer
CHANGED
@@ -16,4 +16,49 @@
|
|
16
16
|
|
17
17
|
> 上記にしたがって、「Private Property DropDownList1 As Object」の一文を付け足して実行すると、
|
18
18
|
|
19
|
-
そういうことをするのは全くの見当違いです。
|
19
|
+
そういうことをするのは全くの見当違いです。
|
20
|
+
|
21
|
+
【2016/10/3 10:50 追記】
|
22
|
+
|
23
|
+
先の私の 2016/10/02 18:42 のコメントで書いた件の具体的な方法を追記します。
|
24
|
+
|
25
|
+
コメントで、
|
26
|
+
|
27
|
+
> FormView.ItemUpdating イベントでも渡せないか考えてみます
|
28
|
+
|
29
|
+
と書きましたが、直感的でなく混乱しそうなので、SqlDataSource.Updating イベントのハンドラで point と date のパラメータを渡すやり方を説明します。(FormView1_ItemUpdating メソッドは一切使いません)
|
30
|
+
|
31
|
+
(1) SqlDataSource の UpdateCommand に設定した UPADTE クエリに [point]=@point, [date]=@date を追加。以下のような感じです。
|
32
|
+
|
33
|
+
```
|
34
|
+
UpdateCommand="UPDATE [tbl_testRg] SET [result1] = @result1, [result2] = @result2,
|
35
|
+
[result3] = @result3, [result4] = @result4, [result5] = @result5,
|
36
|
+
[point]=@point, [date]=@date WHERE [ID] = @ID">
|
37
|
+
```
|
38
|
+
|
39
|
+
(場所は分かりますよね? FormView1_ItemUpdating メソッドの中の strSQL ではありませんよ)
|
40
|
+
|
41
|
+
(2) SqlDataSource の UpdateParameters に以下 Parameter を追加。上記 (1) のようなクエリにしたとすると以下のようになるはずです。
|
42
|
+
|
43
|
+
```
|
44
|
+
<asp:Parameter Name="point" Type="Int32" />
|
45
|
+
<asp:Parameter Name="date" Type="DateTime" />
|
46
|
+
|
47
|
+
```
|
48
|
+
|
49
|
+
(3) SqlDataSource.Updating イベントのハンドラ(メソッド)を作成。その中で FormView1_ItemUpdating メソッドの修正版で行ったように、FindControl で DropDownList を取得し、SelectedValue を取得し、point を計算する。
|
50
|
+
|
51
|
+
(4) 上記 (3) に続いて、ハンドラの引数 SqlDataSourceCommandEventArgs オブジェクトからパラメータを取得し、その Value プロパティに point と dtToday を代入する。以下のような感じです。
|
52
|
+
|
53
|
+
```
|
54
|
+
e.Command.Parameters["@point"].Value = point
|
55
|
+
e.Command.Parameters["@date"].Value = dtToday
|
56
|
+
```
|
57
|
+
|
58
|
+
(5) FormView1_ItemUpdating メソッドは不要なので削除(とりあえずコメントアウトしてください)。
|
59
|
+
|
60
|
+
上記は頭の中で考えただけで、当方では検証してません(できません)。質問者さんの方でやってみて結果を連絡ください。
|
61
|
+
|
62
|
+
<追加情報>
|
63
|
+
今回の問題とは直接関係ないことですが・・・
|
64
|
+
最初の質問の画像を見ると ID フィールド以外は NULL 可になっているようです。実際にデータに NULL があると今のやり方では破綻するので注意してください。NULL にする必要がない限り NULL 不可にすることをお勧めします。
|