以下内容可以让你做你想做的事:
我们需要做的是让 js 协助下一个控件,在这种情况下,任何获得焦点的控件(无论是通过 tab、shift-tab、click 还是从文本中跳出的任何控件组合)框并放到不同的控件上)。通过利用 WebMethod,我们可以将此信息传递到服务器上以获取 AutoPostBack 焦点。
网络方法:
[WebMethod]
public static void set_nextFocus(string id)
{
_toFocus = id;
}
很简单,_toFocus 是类变量static string _toFocus,它保存下一个要聚焦的控件的值。
页面加载
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
//sets focus to the proper control
Page.SetFocus(Page.FindControl(_toFocus));
}
}
JavaScript
在<head>
<script type="text/javascript">
function setFocus(x) {
PageMethods.set_nextFocus(x);
}
</script>
ASP 控件
在本例中,一个文本框。注意 OnFocusIn 的使用。它是ASP控件的一个expando属性,实现没有服务器端定义,并恢复为javascript的onfocusin属性。
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" TabIndex="1"
ontextchanged="TextBox1_TextChanged" OnFocusIn="setFocus(this.id)" >
</asp:TextBox>
此外,为了使用 PageMethods,您必须在表单中启用它,如下所示:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />