2013-03-01 4 views
0

У меня есть четыре текстовых поля внутри UpdatePanel, а для AutoPostBack установлено значение True для всех из них. Когда пользователь вводит значение и нажимает Enter, я хочу, чтобы курсор автоматически переместился в следующее текстовое поле. Когда у меня нет элементов управления в UpdatePanel, стандартный метод textbox.focus работает нормально.Настройка фокуса на текстовое поле в UpdatePanel

Я нашел код here, который привел меня к созданию этого:

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 

Что действительно странно, что это работает РАЗ на любом поле я стараюсь первым. После этого событие запускается, но фокус не меняется. Есть ли что-то дополнительное, что мне нужно для последующих вызовов?

Буду признателен за любые предложения. Спасибо!

ответ

0

Попробуйте установить EnablePartialRendering свойство ScriptManager к false, например, так:

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

Я надеюсь, что это помогает! Удачи и счастливого кодирования :)