如何在textchanged事件上阻止或禁用按钮的回发? [英] How to block or disable button's postback on textchanged event?

查看:68
本文介绍了如何在textchanged事件上阻止或禁用按钮的回发?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于我的'UserName'字段,我正在检查存在的名称,如果存在则会在label.so中发出错误如何禁用按钮的点击事件或回发?



这是我的代码:



For my 'UserName' field i am checking the exist name, if exist then will throw an error in label.so how to disable button's click event or postback?

this is my code:

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;
                    
                }
                else
                {
                    lblUserNameError.Visible = false;
                    btnSave.Enabled = false;
                }
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }  
            finally //Close db Connection if it is open....  
            {
                if (connection.State == ConnectionState.Open)
                    connection.Close();
            }
        }

推荐答案

我认为你应该写那个 Enabled = false in else part。

I think you should write that Enabled=false in else part.
if (reader.HasRows)
{
    lblUserNameError.Text = "Alredy Exist";
    lblUserNameError.Visible = true;
    btnSave.Enabled = false;
}
else
{
    lblUserNameError.Visible = false;
    btnSave.Enabled = false;
}

按钮应该被禁用,如果 UserName 存在。

Button should be disabled, if UserName exists.


您的文本框位于UpdatePanel内,Button也必须位于UpdatePanel内,否则将无法刷新。



your textbox is inside an UpdatePanel also the Button has to be inside an UpdatePanel or else it won't be refreshed.

<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>





然后代码背后将如下工作





then code behind side will work like below

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();
            }
        }


这篇关于如何在textchanged事件上阻止或禁用按钮的回发?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆