2015-12-19 2 views
1

Недавно я обновил AjaxControlToolkit с версии 4.x до 15.1. В старой версии я мог бы использовать следующий код для установки фокуса.Есть ли альтернативный метод для метода SetFocusOnLoad в последнем AjaxControlToolkit?

protected void SetFocus(System.Web.UI.Control ctrl) 
    { 
     AjaxControlToolkit.Utility.SetFocusOnLoad(ctrl); 

    } 

Но в последней версии я не смог найти такой метод. Я проверил на странице codeplex по адресу https://ajaxcontroltoolkit.codeplex.com/ для любого альтернативного метода, но не смог найти никаких деталей.

Благодаря

ответ

1

Нет, этот код был удален в последней v15.1.

Однако, вы легко можете добавить его в свой проект, вот код:

/// <summary> 
    /// Set the focus of a control after all the client-side behaviors 
    /// have finished initializing 
    /// </summary> 
    /// <param name="control">Control to focus</param> 
    /// <remarks> 
    /// SetFocusOnLoad is a replacement for ScriptManager.SetFocus and 
    /// Page.SetFocus that will focus the control after any client-side 
    /// behaviors have been initialized. 
    /// </remarks> 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", Justification = "Assembly is not localized")] 
    public static void SetFocusOnLoad(Control control) 
    { 
     if (control == null) 
     { 
      throw new ArgumentNullException("control", "Control cannot be null!"); 
     } 

     string script = 
      "(function() { " + 
       "var fn = function() { " + 
        "var control = $get('" + control.ClientID + "'); " + 
        "if (control && control.focus) { control.focus(); } " + 
        "Sys.Application.remove_load(fn);" + 
       "};" + 
       "Sys.Application.add_load(fn);" + 
      "})();"; 
     ScriptManager.RegisterStartupScript(control.Page, control.GetType(), 
      control.ClientID + "_SetFocusOnLoad", script, true); 
    }