UpdatePanel + AsyncPostBackTrigger实现校验用户名是否可用
方法:让UpdatePanel之外的某个控件触发该UpdatePanel进行局部更新,采用AsyncPostBackTrigger触发器实现
TextBox(用户名控件)的声明:
<asp:TextBox ID="TextBoxUserName" runat="server" AutoPostBack="True"
ontextchanged="TextBoxUserName_TextChanged"></asp:TextBox>
ontextchanged="TextBoxUserName_TextChanged"></asp:TextBox>
提示该用户名是否可用的控件Label以及UpdatePanel的声明:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TextBoxUserName" EventName="TextChanged" />
</Triggers>
<ContentTemplate>
<asp:Label ID="LabelAccountNote" runat="server" ForeColor="Red"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="TextBoxUserName" EventName="TextChanged" />
</Triggers>
<ContentTemplate>
<asp:Label ID="LabelAccountNote" runat="server" ForeColor="Red"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
注意<Triggers>标签中的内容,AsyncPostBackTrigger两个属性:
ControlID:用来设定触发UpdatePanel更新的控件。
EventName:用来设定该控件上触发UpdatePanel更新的事件(这里设定为TextChanged事件。如果是对于Button控件,那么一般设置为Click事件)。
后台代码:
protected void TextBoxUserName_TextChanged(object sender, EventArgs e)
{
string userName = this.TextBoxUserName.Text.Trim();
//查询数据库,检验该用户名是否可用
string sql = "select count(*) from UserAccount where UserName = @UserName";
SqlParameter[] paras = new SqlParameter[1];
paras[0] = new SqlParameter("@UserName", userName);
object o = DataAccess.ExcuteScalar_SQL(sql, paras);
int n = int.Parse(o.ToString());
if (n > 0)
{
this.LabelAccountNote.Text = "该用户名已经存在,请换一个。";
}
else
{
this.LabelAccountNote.Text = "该用户名可以使用。";
}
}
{
string userName = this.TextBoxUserName.Text.Trim();
//查询数据库,检验该用户名是否可用
string sql = "select count(*) from UserAccount where UserName = @UserName";
SqlParameter[] paras = new SqlParameter[1];
paras[0] = new SqlParameter("@UserName", userName);
object o = DataAccess.ExcuteScalar_SQL(sql, paras);
int n = int.Parse(o.ToString());
if (n > 0)
{
this.LabelAccountNote.Text = "该用户名已经存在,请换一个。";
}
else
{
this.LabelAccountNote.Text = "该用户名可以使用。";
}
}
public class DataAccess
{
public static object ExcuteScalar_SQL(string sql, SqlParameter[] parameters)
{
SqlConnection conn = GetConnection();
SqlCommand cmd = new SqlCommand(sql, conn);
for (int i = 0; i < parameters.Length; i++)
{
cmd.Parameters.Add(parameters[i]);
}
conn.Open();
object o = cmd.ExecuteScalar();
conn.Close();
return o;
}
}
{
public static object ExcuteScalar_SQL(string sql, SqlParameter[] parameters)
{
SqlConnection conn = GetConnection();
SqlCommand cmd = new SqlCommand(sql, conn);
for (int i = 0; i < parameters.Length; i++)
{
cmd.Parameters.Add(parameters[i]);
}
conn.Open();
object o = cmd.ExecuteScalar();
conn.Close();
return o;
}
}
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利
This posting is provided "AS IS" with no warranties, and confers no rights.
This posting is provided "AS IS" with no warranties, and confers no rights.
浙公网安备 33010602011771号