ユーザーがテキストボックスをクリックしたときに、サーバー側のイベントを実行する必要があります。これまでのところ、onfocus イベントを使用して JavaScript 関数を呼び出すことはできますが、onfocus を削除しようとすると、いくつかのコードを実行し、コントロールにフォーカスを戻してから、無限ループで onfocus イベントを再起動します。以下のサンプル...
HTML
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" onfocus="CallServer(this);"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" AutoPostBack="True" onfocus="CallServer(this);"></asp:TextBox>
Javascript
function CallServer(obj) {
if (obj != "") {
var control = document.getElementById(obj.id)
__doPostBack(obj.id, "onfocus");
}
}
コードビハインド
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack Then
Dim target As String = Page.Request.Params.Get("__EVENTTARGET")
Dim eventarg As String = Page.Request.Params.Get("__EVENTARGUMENT")
Dim PostControl As Control = Nothing
If target <> "" Then
PostControl = Page.FindControl(target)
End If
If eventarg = "onfocus" Then
CType(PostControl, TextBox).Attributes("onfocus") = "null"
...do some code
Page.SetFocus(PostControl)
CType(ctrl, TextBox).Attributes.Add("onfocus", "CallServer(this)")
End If
End If
End Sub