0

UpdatePanel 内に 4 つのテキスト ボックスがあり、それらすべてに対して AutoPostBack が True に設定されています。ユーザーが値を入力して Enter キーを押すと、カーソルが次のテキスト ボックスに自動的に移動するようにします。UpdatePanel にコントロールがない場合、標準の textbox.focus メソッドは正常に機能します。

これを作成するきっかけとなったコードをここで見つけました:

    Protected Sub txtField_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles txtField1.TextChanged,
    txtField2.TextChanged, txtField3.TextChanged
    'Based on the textbox where data was changed, move the cursor to the next field.

    Try
        Dim sm As ScriptManager = ScriptManager.GetCurrent(Me)

        'As multiple textboxes fire this same event, determine which textbox triggered this.
        Dim MyTextbox As TextBox = TryCast(sender, TextBox)

        Select Case MyTextbox.ID.ToString
            Case "txtField1"
                sm.SetFocus(txtField2)
            Case "txtField2"
                sm.SetFocus(txtField3)
            Case "txtField3"
                sm.SetFocus(txtField4)
        End Select

    Catch ex As Exception
        lblError.Text = "Error in [txtField_TextChanged]: " & ex.Message
    End Try

End Sub

本当に奇妙なのは、これが最初に試したフィールドで一度だけ機能することです。その後、イベントが発生しますが、フォーカスは変わりません。後続の呼び出しのために追加する必要があるものはありますか?

提案をいただければ幸いです。ありがとうございました!

4

1 に答える 1

0

次のようにtoのEnablePartialRenderingプロパティを設定してみてください。ScriptManagerfalse

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="false"></asp:ScriptManager>

これが役立つことを願っています!頑張って、幸せなコーディング:)

于 2014-03-03T19:20:39.200 に答える