ScriptManager.SetFocus无法正常工作

时间:2011-03-09 23:13:41

标签: .net asp.net asp.net-ajax

我有一个非常复杂的页面,它有一些AJAX功能。页面的结构由aspx页面中的<asp:ScriptManager>组成。 3个用户控件。

页面中的一个用户控件链接到另一个用户控件。

第二级用户控件包含许多<asp:UpdatePanel>控件。在更新面板中,我使用<asp:RadioButtonList>控件设置为AutoPostBack="True",并在SelectedIndexChanged事件中我使用ScriptManager.GetCurrent(Page).SetFocus(txtAddressLine1);尝试将焦点设置为文本框当单选按钮列表具有特定的选定值时。

当前没有设置焦点,但在调试代码时设置焦点正在执行。

我使用此结构创建了一个简单的示例页面(aspx - &gt;用户控件 - &gt;使用UpdatePanel嵌套用户控件)并正确设置焦点。

有没有人对可能导致焦点不被设置的原因有任何建议?

我在Windows 7中使用IIS,Visual Studio 2010 Professional,.NET 4.0,C#,而web.config没有为<xhtmlConformance>属性设置任何内容。

1 个答案:

答案 0 :(得分:1)

问题是由用户控件中的以下代码引起的:

protected void Page_PreRender(object sender, EventArgs e)
{
    if (txtQNumber != null) txtQNumber.Focus(); 
}

焦点被设置为覆盖ScriptManager.SetFocus()的另一个文本字段。