- - PR -
HTMLからxxx.aspx.vbへの処理のわたし方。
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-12-15 10:23
ASP.NETでDataList内のTextBoxにフォーカス取得時の処理をxxxx.aspx.vbで記述したいのですが、どうしたらよいでしょうか?
DataList内のTextBox.Attributes("onFocus") = "処理の内容" という記述はしているのですが、HTMLの方で処理するのではなく、イベントが発生したらHTMLの方からxxxx.aspx.vb内のプロシージャを呼び出して処理を行いたいのですが、その方法がわかりません。 どのたかご存知の方、よろしくお願いします。 | ||||
|
投稿日時: 2004-12-15 10:45
DataList内のTextBoxにフォーカスがあたったら、PostBackしたいということですよね?
Page.GetPostBackEventReferenceメソッドを使用して、 PostBackさせるクライアントサイドの関数名を取得して TextBox.Attributes("onFocus") で呼ばれるクライアントサイドの関数からポストバックさせる関数を呼べば可能だとおもいます。 | ||||
|
投稿日時: 2004-12-15 11:04
ありがとうございます。 しかし私にはちょっと難しく・・・ 処理的にはそのような感じでできそうなきがします。 具体的にどのようにしたらいいでしょうか? | ||||
|
投稿日時: 2004-12-15 13:21
ただPsotBackさせたいだけなら
Dim postBackFunctionName As String = Page.GetPostBackEventReference(Me) Dim script As System.Text.StringBuilder = New System.Text.StringBuilder script.Append("<SCRIPT language=""JavaScript"">" & vbCrLf) script.Append("function GotFocus()" & vbCrLf) script.Append("{" & vbCrLf) script.Append(postBackFunctionName & ";" & vbCrLf) script.Append("}" & vbCrLf) script.Append("</SCRIPT>" & vbCrLf) Me.Page.RegisterClientScriptBlock("GotFocus", script.ToString()) Me.TextBox1.Attributes("onFocus") = "GotFocus()" これでOKです。 あとはヘルプを読んで工夫してください。 ヘルプを読んで理解する力をつけるためにも。。。。 | ||||
|
投稿日時: 2004-12-15 14:02
アイディアだけ。
DataListに隠しボタンを置いて、TextBoxのonFocusで隠しボタンをsubmitする。 これなら、どの行でイベントが発生したかが分かると思います。 あと、RegisterStartupScriptでTextBoxにフォーカスをセットする必要があるでしょう。 > DataList内のTextBox.Attributes("onFocus") = "処理の内容" > という記述はしているのですが、HTMLの方で処理するのではなく こちらの方が簡単かと。 | ||||
|
投稿日時: 2004-12-15 14:32
気になったので
フォーカスinでポストバックを発生させるとページがリフレッシュされて フォーカスが失われそうな気がします。 更にポストバックからの戻ったページでフォーカス当てると再度ポストバック してしまい無限ループ化しそうに思います。 うまく状態管理しないと、使えないかもです。 使えたとしてもちょっと使いづらそうに思えますが。 | ||||
|
投稿日時: 2004-12-15 14:41
私もアイディアだけ。
ページのどっかにHiddenフォームを置いといて、 onfocus="Form1.Hidden1.value=this.id;Form1.submit();" ってやっといて、aspx.vbのPage_LoadでHidden1の値を見て処理を行う。 あ、でもDataList内のTextBoxのidは自動生成だからだめか… もうひと工夫必要ですね(^^; ちょっとちゃんと調べてないんでここはわからないのですが、 id自動生成のとこに一定の規則性があるならこの方法も使えますかね? 今回のケースに限ったことでなく、hiddenを使いまわしてPage_Loadに処理を書く、 という方法、私はよく使ってます。つくりがシンプルになることが多いので。 | ||||
|
投稿日時: 2004-12-15 14:53
菊池様がおっしゃるように
フォーカスあたっただけでPostBackっていう設計に問題ありですね。 | ||||
