回答編集履歴
2
全体的に回答を修正
test
CHANGED
@@ -1,3 +1,57 @@
|
|
1
|
-
|
1
|
+
自己解決されたようなので、残っている疑問点の参考になるかもしれないことを記述します。
|
2
2
|
|
3
3
|
|
4
|
+
|
5
|
+
まずPostBackされたときにブラウザから送られてきたデータは、以下のようにしてRequest.Formコレクションの内容を表示すれば確認できます。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
``` VB.Net
|
10
|
+
|
11
|
+
For Each key As String In Request.Form.Keys
|
12
|
+
|
13
|
+
Dim value As String = Request.Form(key)
|
14
|
+
|
15
|
+
If value Is Nothing Then
|
16
|
+
|
17
|
+
value = "<Nothing>"
|
18
|
+
|
19
|
+
End If
|
20
|
+
|
21
|
+
Debug.WriteLine(key.ToString & ControlChars.Tab & value)
|
22
|
+
|
23
|
+
Next
|
24
|
+
|
25
|
+
```
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
keyの部分がブラウザに表示された inputタグの name属性の値になります。
|
30
|
+
|
31
|
+
valueの部分がinputタグに入力された文字列になります。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
ブラウザから送られてきたデータは UniqueIDプロパティの値が name属性の値 と同じTextBoxを探してセットされます。
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
(ちなみに TextBoxの UniqueID は通常 ID と同じですが、MasterPageを使っていると ID の頭に
|
40
|
+
|
41
|
+
MasterPage の ID やら ContentPlaceHolderID やら付加された値になります)
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
なので初回表示時とPostBack時で UniqueIDプロパティの値が異なっていると、ブラウザから送られてきたデータがTextBoxにセットされません。
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
あと、ブラウザから送られてきたデータがTextBoxにセットされるタイミングは、Page.InitCompleteイベント終了後で、Page.PreLoadイベント開始前です。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
TextBoxを動的に生成している場合は、Page.Initイベント か Page.InitCompleteイベント の中で TextBoxの生成・IDの設定・コントロールをコンテナ(PageやGridViewなど)へ追加するなどを終わらせておかないと、ブラウザから送られてきたデータがTextBoxにセットされません。
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
1
回答後に質問内容が変わっていたので書き直し
test
CHANGED
@@ -1,57 +1,3 @@
|
|
1
|
-
ま
|
1
|
+
一度、回答を書きましたが、質問文を見直したら追記があって解決したみたいなのでちょっと書き直します。
|
2
|
-
|
3
|
-
ブラウザからPostBackされたデータは Request.Formコレクションの中に入ってくるので、
|
4
|
-
|
5
|
-
Form.Loadイベント辺りに以下のコードを入れて、デバッグ実行で確認してみてください。
|
6
2
|
|
7
3
|
|
8
|
-
|
9
|
-
``` VB.Net
|
10
|
-
|
11
|
-
For Each key As String In Request.Form.Keys
|
12
|
-
|
13
|
-
Dim value As String = Request.Form(key)
|
14
|
-
|
15
|
-
If value Is Nothing Then
|
16
|
-
|
17
|
-
value = "<Nothing>"
|
18
|
-
|
19
|
-
End If
|
20
|
-
|
21
|
-
Debug.WriteLine(key.ToString & ControlChars.Tab & value)
|
22
|
-
|
23
|
-
Next
|
24
|
-
|
25
|
-
```
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
MasterPageを使っているとIDの頭に色々と付きますが、その辺は考慮して観察してみてください。
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
Request.Formコレクションの中にデータがあるのに TextBoxに反映されない場合は、
|
34
|
-
|
35
|
-
TextBoxを生成しているタイミングが遅い可能性があります。
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
PostBackされてきた値が TextBoxのTextプロパティにセットされるのは
|
40
|
-
|
41
|
-
Page.InitCompleteイベント終了後で、Page.PreLoadイベント開始前なので、
|
42
|
-
|
43
|
-
Page.InitイベントかPage.InitCompleteイベントの中で
|
44
|
-
|
45
|
-
TextBoxの生成やIDの設定などを終わらせておく必要があります。
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
(もしかしたらPage.InitCompleteイベントの後であっても、
|
50
|
-
|
51
|
-
GridView.LoadViewStateイベント→RowCreatedイベント辺りでTextBoxを生成すれば
|
52
|
-
|
53
|
-
間に合うかもしれないけど・・・)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
とりあえず今出ている情報で思いつくのはこのくらいです。
|