回答編集履歴

3

追記&訂正

2018/11/06 03:42

投稿

退会済みユーザー
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
 
44
44
 
45
- 以下のコードは、MaintainScrollPositionOnPostBack="true" の条件で、C# 側のコードで TextBox.Focus() とした場合と、RegisterStartupScript メソッドでーカスを当てるためのスクリプトを追加した場合、レンダリングされる html ソースの違いです。
45
+ 以下のコードは、MaintainScrollPositionOnPostBack="true" の条件で、C# 側のコードで TextBox.Focus() とした場合と、RegisterStartupScript メソッドでフォーカスを当てるためのスクリプトを追加した場合、レンダリングされる html ソースの違いです。
46
46
 
47
47
 
48
48
 

2

追記

2018/11/06 03:42

投稿

退会済みユーザー
test CHANGED
@@ -31,3 +31,113 @@
31
31
 
32
32
 
33
33
  それ例外の原因があるかもしれないが、あるとすると質問者さん独自の実装の問題。質問のコメントに書いたように「今のコードを問題が再現できる必要最低限になるまでどんどん削っていく」というようにして自分で調べてもらう他なさそう。
34
+
35
+
36
+
37
+ **【2018/11/06 11:37 追記】**
38
+
39
+
40
+
41
+ 下の 2018/11/06 11:23 の -shu- さんへの私のコメントで「具体的には後で回答欄に追記しておきます」と書きましたが、それを追記しておきます。
42
+
43
+
44
+
45
+ 以下のコードは、MaintainScrollPositionOnPostBack="true" の条件で、C# 側のコードで TextBox.Focus() とした場合と、RegisterStartupScript メソッドでローカスを当てるためのスクリプトを追加した場合、レンダリングされる html ソースの違いです。
46
+
47
+
48
+
49
+ **TextBox.Focus()**
50
+
51
+
52
+
53
+ ```
54
+
55
+ ・・・前略・・・
56
+
57
+
58
+
59
+ <script type="text/javascript">
60
+
61
+ //<![CDATA[
62
+
63
+
64
+
65
+ theForm.oldSubmit = theForm.submit;
66
+
67
+ theForm.submit = WebForm_SaveScrollPositionSubmit;
68
+
69
+
70
+
71
+ theForm.oldOnSubmit = theForm.onsubmit;
72
+
73
+ theForm.onsubmit = WebForm_SaveScrollPositionOnSubmit;
74
+
75
+
76
+
77
+ theForm.oldOnLoad = window.onload;
78
+
79
+ window.onload = WebForm_RestoreScrollPosition;
80
+
81
+ WebForm_AutoFocus('MainContent_TextBox2');//]]>
82
+
83
+ </script>
84
+
85
+ </form>
86
+
87
+ </body>
88
+
89
+ </html>
90
+
91
+ ```
92
+
93
+
94
+
95
+ **RegisterStartupScript メソッド使用**
96
+
97
+
98
+
99
+ ```
100
+
101
+ ・・・前略・・・
102
+
103
+
104
+
105
+ <script type="text/javascript">
106
+
107
+ //<![CDATA[
108
+
109
+ document.getElementById('MainContent_TextBox2').focus();
110
+
111
+ theForm.oldSubmit = theForm.submit;
112
+
113
+ theForm.submit = WebForm_SaveScrollPositionSubmit;
114
+
115
+
116
+
117
+ theForm.oldOnSubmit = theForm.onsubmit;
118
+
119
+ theForm.onsubmit = WebForm_SaveScrollPositionOnSubmit;
120
+
121
+
122
+
123
+ theForm.oldOnLoad = window.onload;
124
+
125
+ window.onload = WebForm_RestoreScrollPosition;
126
+
127
+ //]]>
128
+
129
+ </script>
130
+
131
+ </form>
132
+
133
+ </body>
134
+
135
+ </html>
136
+
137
+ ```
138
+
139
+ いずれもフォーカスが当てってから、window.onload = WebForm_RestoreScrollPosition; でスクロールされます。
140
+
141
+
142
+
143
+ 動きとしてはどちらも同じです。「自力で上記回答のようなスクリプトを書くのはあまり意味がない」というか、逆に手間が増えるし、質問者さんに指摘されたように ClientID を使わないとダメということも考えなければなりません。

1

訂正

2018/11/06 02:37

投稿

退会済みユーザー
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- クライアント側のスクリプトで目的の要素にフォーカスが当たってからスクロールするという動きになるので期待通りの結果になります。
17
+ クライアント側のスクリプトで目的の要素にフォーカスが当たってからスクロールするという動きになるので期待通りの結果になります。
18
18
 
19
19
 
20
20