回答編集履歴

2

全体的に回答を修正

2016/06/13 08:34

投稿

twck
twck

スコア314

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

回答後に質問内容が変わっていたので書き直し

2016/06/13 08:34

投稿

twck
twck

スコア314

test CHANGED
@@ -1,57 +1,3 @@
1
- ずはPostBackされときに本当にブラウザか送られてきているか確認てみしょう
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
- とりあえず今出ている情報で思いつくのはこのくらいです。