【小技巧】方便地为页面中的控件设置焦点
2007-07-02 21:01 Valens 阅读(1049) 评论(1) 编辑 收藏 举报我们知道,在.net中为某控件设置焦点可以使用Form提供的一个属性:
defaultbutton = "Button1",如果为文本框设置焦点可以使用另外一个属性:defaultfocus = "TextBox1"。
<form id="Form1"
defaultbutton="Button1"
defaultfocus="TextBox1"
runat="server">
defaultbutton="Button1"
defaultfocus="TextBox1"
runat="server">
我们还可以在:
protected void Page_Load(object sender, EventArgs e)
{
SetFocus("TextBox1.ClientID");
}
{
SetFocus("TextBox1.ClientID");
}
此时如果查看这个页面生成的html源文件,在源文件底部,可以发现类似下面的一段代码:
<script type="text/javascript">
<!--
..
WebForm_AutoFocus('ctl00_ContentPlaceHolder1_txt_MessageInput');
// -->
</script>
<!--
..
WebForm_AutoFocus('ctl00_ContentPlaceHolder1_txt_MessageInput');
// -->
</script>
那其实是可以考虑通过这个方法来设置焦点的。
<script type="text/javascript"><!--
function CustomSetFocus()
{
WebForm_AutoFocus('ctl00_ContentPlaceHolder1_txt_MessageInput');
}
--></script>
function CustomSetFocus()
{
WebForm_AutoFocus('ctl00_ContentPlaceHolder1_txt_MessageInput');
}
--></script>
这似乎没什么特别的,但给我们一个启发:
假如我们在后置代码中想任意设置焦点怎么处理?似乎可以解决了!
通过调用我们自定义的一个简单的设置焦点的脚本。
下面展示如何调用:
比如在一个Button的Click事件中我们加上:
Page.RegisterStartupScript("MySetFocus", "CustomSetFocus()");
[假如想自定义某个控件,请改造一下CustomSetFocus方法,即添加一个控件ID作为参数]假如我们使用了UpdatePanel控件,会发现调用会出现问题,这时,我们采取这种写法:
ScriptManager.RegisterStartupScript(
this.Page,
this.GetType(),
"mysetfocus", "customsetfocus();",
true);
this.Page,
this.GetType(),
"mysetfocus", "customsetfocus();",
true);
这样就可以比较方便地设置焦点了。
由于比较简单就不提供源码下载了。