对于我的“用户名”字段,我正在检查存在名称,如果存在则将在label。引发错误。那么如何禁用按钮的单击事件或回发?
protected void txtUserName_TextChanged(object sender, EventArgs e)
{
try
{
string userName = txtUserName.Text;
if (connection.State == ConnectionState.Closed)
connection.Open();
command = new SqlCommand();
command.CommandText = "Get_UserName";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@userName", userName);
command.Connection = connection;
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
lblUserNameError.Text = "Alredy Exist";
lblUserNameError.Visible = true;
//btnSave.Enabled = false;
//btnSave.onClientClick="return false";
someID.Attributes.Add("onClick", "return false;");
}
else
{
lblUserNameError.Visible = false;
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally //Close db Connection if it is open....
{
if (connection.State == ConnectionState.Open)
connection.Close();
}
}
以上三种方式,我仍然可以在点击按钮后返回页面。
我的文本框在UpdatePanel内,按钮也必须在UpdatePanel内,否则它不会刷新。
<asp:updatepanel id="uptxtUserName" runat="server" xmlns:asp="#unknown"><contenttemplate>
<asp:textbox id="txtUserName" runat="server" tabindex="8" autopostback="true">
ontextchanged="txtUserName_TextChanged"></asp:textbox>
<asp:label id="lblUserNameError" runat="server" visible="false" forecolor="Red"></asp:label>
<asp:requiredfieldvalidator id="reqUName" controltovalidate="txtUserName" errormessage="Required" class="error" runat="server" forecolor="Red">
</asp:requiredfieldvalidator>
</contenttemplate>
<triggers>
<asp:asyncpostbacktrigger controlid="txtUserName" eventname="TextChanged" />
<asp:asyncpostbacktrigger controlid="btnSave" eventname="Click" />
<asp:asyncpostbacktrigger controlid="btnCancel" eventname="Click" />
</triggers>
</asp:updatepanel>
<pre lang="xml"><asp:UpdatePanel ID="upbtnSave" runat="server"><ContentTemplate>
<asp:Button ID="btnSave" Text="Save" runat="server" TabIndex="31" class="btn btn-success" onclick="btnSave_Click"></asp:Button>
<asp:Button ID="btnCancel" Text="Cancel" CausesValidation="false" runat="server" TabIndex="32" class="btn" onclick="btnCancel_Click"></asp:Button>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSave" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="btnCancel" EventName="Click" />
<asp:AsyncPostBackTrigger ControlID="txtUserName" EventName="TextChanged" />
</Triggers>
</asp:UpdatePanel>
那么后面的代码将如下所示
protected void txtUserName_TextChanged(object sender, EventArgs e)
{
try
{
string userName = txtUserName.Text;
if (connection.State == ConnectionState.Closed)
connection.Open();
command = new SqlCommand();
command.CommandText = "Get_UserName";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@userName", userName);
command.Connection = connection;
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
lblUserNameError.Text = "Alredy Exist";
lblUserNameError.Visible = true;
btnSave.OnClientClick = "return false;";
}
else
{
lblUserNameError.Visible = false;
btnSave.OnClientClick = "return true;";
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally //Close db Connection if it is open....
{
if (connection.State == ConnectionState.Open)
connection.Close();
connection.Close();
command.Dispose();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句