回答編集履歴
2
C# と VB\.NET のコードを併記
test
CHANGED
@@ -98,15 +98,29 @@
|
|
98
98
|
|
99
99
|
|
100
100
|
|
101
|
-
(4) 上記 (3) に続いて、ハンドラの引数 SqlDataSourceCommandEventArgs オブジェクトからパラメータを取得し、その Value プロパティに point と dtToday を代入する。以下のような感じです。
|
101
|
+
(4) 上記 (3) に続いて、ハンドラの引数 SqlDataSourceCommandEventArgs オブジェクトからパラメータを取得し、その Value プロパティに point と dtToday を代入する。以下のような感じです。(訂正:C# と VB.NET のコードを併記しました)
|
102
102
|
|
103
103
|
|
104
104
|
|
105
|
+
C#
|
106
|
+
|
105
107
|
```
|
106
108
|
|
107
|
-
e.Command.Parameters["@point"].Value = point
|
109
|
+
e.Command.Parameters["@point"].Value = point;
|
108
110
|
|
109
|
-
e.Command.Parameters["@date"].Value = dtToday
|
111
|
+
e.Command.Parameters["@date"].Value = dtToday;
|
112
|
+
|
113
|
+
```
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
VB.NET
|
118
|
+
|
119
|
+
```
|
120
|
+
|
121
|
+
e.Command.Parameters("@point").Value = point
|
122
|
+
|
123
|
+
e.Command.Parameters("@date").Value = dtToday
|
110
124
|
|
111
125
|
```
|
112
126
|
|
1
具体的方法の追記
test
CHANGED
@@ -35,3 +35,95 @@
|
|
35
35
|
|
36
36
|
|
37
37
|
そういうことをするのは全くの見当違いです。
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
【2016/10/3 10:50 追記】
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
先の私の 2016/10/02 18:42 のコメントで書いた件の具体的な方法を追記します。
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
コメントで、
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
> FormView.ItemUpdating イベントでも渡せないか考えてみます
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
と書きましたが、直感的でなく混乱しそうなので、SqlDataSource.Updating イベントのハンドラで point と date のパラメータを渡すやり方を説明します。(FormView1_ItemUpdating メソッドは一切使いません)
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
(1) SqlDataSource の UpdateCommand に設定した UPADTE クエリに [point]=@point, [date]=@date を追加。以下のような感じです。
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
UpdateCommand="UPDATE [tbl_testRg] SET [result1] = @result1, [result2] = @result2,
|
68
|
+
|
69
|
+
[result3] = @result3, [result4] = @result4, [result5] = @result5,
|
70
|
+
|
71
|
+
[point]=@point, [date]=@date WHERE [ID] = @ID">
|
72
|
+
|
73
|
+
```
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
(場所は分かりますよね? FormView1_ItemUpdating メソッドの中の strSQL ではありませんよ)
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
(2) SqlDataSource の UpdateParameters に以下 Parameter を追加。上記 (1) のようなクエリにしたとすると以下のようになるはずです。
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
```
|
86
|
+
|
87
|
+
<asp:Parameter Name="point" Type="Int32" />
|
88
|
+
|
89
|
+
<asp:Parameter Name="date" Type="DateTime" />
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
```
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
(3) SqlDataSource.Updating イベントのハンドラ(メソッド)を作成。その中で FormView1_ItemUpdating メソッドの修正版で行ったように、FindControl で DropDownList を取得し、SelectedValue を取得し、point を計算する。
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
(4) 上記 (3) に続いて、ハンドラの引数 SqlDataSourceCommandEventArgs オブジェクトからパラメータを取得し、その Value プロパティに point と dtToday を代入する。以下のような感じです。
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
```
|
106
|
+
|
107
|
+
e.Command.Parameters["@point"].Value = point
|
108
|
+
|
109
|
+
e.Command.Parameters["@date"].Value = dtToday
|
110
|
+
|
111
|
+
```
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
(5) FormView1_ItemUpdating メソッドは不要なので削除(とりあえずコメントアウトしてください)。
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
上記は頭の中で考えただけで、当方では検証してません(できません)。質問者さんの方でやってみて結果を連絡ください。
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
<追加情報>
|
124
|
+
|
125
|
+
今回の問題とは直接関係ないことですが・・・
|
126
|
+
|
127
|
+
最初の質問の画像を見ると ID フィールド以外は NULL 可になっているようです。実際にデータに NULL があると今のやり方では破綻するので注意してください。NULL にする必要がない限り NULL 不可にすることをお勧めします。
|
128
|
+
|
129
|
+
|