サーバー側でもできます。非同期ポストバックの原因となったコントロールにフォーカスを移す方法の例を次に示します。
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack)
{
string IDPostbackCtrl = GetAsyncPostBackControlID(Page, Page.Request);
ScriptManager.GetCurrent(Page).SetFocus(IDPostbackCtrl);
}
}
}
public string GetAsyncPostBackControlID(Page page, HttpRequest request)
{
string smUniqueId = ScriptManager.GetCurrent(page).UniqueID;
string smFieldValue = request.Form[smUniqueId];
if (!String.IsNullOrEmpty(smFieldValue) && smFieldValue.Contains('|'))
return smFieldValue.Split('|')[1];
return String.Empty;
}