我有一个登录控件和一个创建用户控件我的网页...我希望当页面加载时光标位于登录控件的用户名文本框中...我怎么能这样做?
<asp:LoginView ID="LoginView1" runat="server">
<LoggedInTemplate>
Bingo..!!! Youuuuu did it...<asp:LoginName ID="LoginName1" runat="server" />.
</LoggedInTemplate>
<AnonymousTemplate>
<asp:DropShadowExtender ID="DropShadowExtender1" runat="server"
TargetControlID="Panel1"
Rounded="true"
Opacity=".38">
</asp:DropShadowExtender>
<asp:Panel ID="Panel1" runat="server"
BackColor="Silver">
<asp:Login ID="Login1" runat="server"
DestinationPageUrl="~/ViewCart_aspx/ViewCart.aspx"
Height="152px"
Width="396px"
RememberMeSet="True"
OnLoggedIn="ContinueButton_Click" >
<LayoutTemplate>
<fieldset>
<table border="0"
cellpadding="1"
cellspacing="0"
style="border-collapse:collapse;">
<tr>
<td>
<table border="0" cellpadding="0" style="height:152px;width:396px;">
<tr>
<td align="center" colspan="2">
<h3>Log In</h3> </td>
</tr>
<tr>
<td align="right">
<asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">User Name:</asp:Label>
</td>
<td>
<asp:TextBox ID="UserName" runat="server" Width="150px" TabIndex="0"></asp:TextBox>
<asp:RequiredFieldValidator ID="UserNameRequired" runat="server"
ControlToValidate="UserName" ErrorMessage="User Name is required."
ToolTip="User Name is required." ValidationGroup="ctl01$Login1">*</asp:RequiredFieldValidator>
</td>
</tr>
你可以看到UserName
文本框在登录控件内...所以我无法访问它的属性..我怎么找到控件?
答案 0 :(得分:2)
编辑:正如您在评论中提到的,您希望将登录按钮设置为默认按钮。为此,您需要将此按钮设置为默认按钮。
不幸的是,正如我在您的问题评论中所说的那样,您没有正确格式化代码。所以我假设登录按钮位于与用户名文本框相同的名称容器中,其名称为btnLogin
,您可以将此控件设置为具有HtmlForm.DefaultButton
属性的默认控件,因此:
您可以使用Page.SetFocus
。它将浏览器焦点设置为指定的控件:
Page.SetFocus(txtName);
如果您想要访问UserName
文本框,可以使用:
var login1 = LoginView1.FindControl("Login1") as Login;
if (login1 != null)
{
var txtUserName = login1.FindControl("UserName");
if (txtUserName != null)
{
Page.SetFocus(txtUserName);
}
var btnLogin = login1.FindControl("btnLogin");
if (btnLogin != null)
{
Page.Form.DefaultButton = btnLogin.UniqueID;
}
}
但请注意:
对于
LoginView
控制,当时 在某个时间添加到页面上, 只有一个Template
(匿名或 loggedIn)应用于Control
例如,那时我们只能 检索那些的引用 活动模板中的控件(不能 访问非活动的那些 模板)。
答案 1 :(得分:1)
在页面加载事件中编写代码,如下所示
textbox1.focus();
无论在哪里,都可以使用控件的ID来访问后面代码中的控件。
答案 2 :(得分:0)
在这种情况下,DefaultFocus属性似乎是合适的:
// inside page_load, LoginUser is the Login control
Page.Form.DefaultFocus = LoginUser.FindControl("Username").ClientID;
相关问题:Set focus to textbox in ASP.NET Login control on page load