簡體   English   中英

String.Empty在單擊按鈕時不起作用

[英]String.Empty not working on button click

我正在嘗試使用函數clearForm()來清除“取消”按鈕上的表單,該函數將String.Empty與表單的每個字段一起使用,但這不起作用。 我既沒有收到任何錯誤,也沒有得到預期的結果。

這是我的設計代碼:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddEmployee.aspx.cs" Inherits="AddEmployee" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Add Employee</title>
<link href="css/Style.css" type="text/css" rel="Stylesheet" />
</head>
<body>
    <form id="form1" runat="server">
    <ajax:ToolkitScriptManager ID="toolkit1" runat="server"></ajax:ToolkitScriptManager>
    <div>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        <table align="center" class="loginBox">
            <tr>
                <th colspan="2" style="color:White; font-size:medium; padding-bottom:10px;" align="left">Personal Information</th>
            </tr>
            <tr>
                <td>Name:</td>
                <td><asp:TextBox ID="txtName" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqName" ControlToValidate="txtName" runat="server" Display="None" ErrorMessage="Name" ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td>Address</td>
                <td><asp:TextBox TextMode="MultiLine" Height="40" Width="135" ID="txtAddress" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqAdd" ControlToValidate="txtAddress" runat="server" Display="None" ErrorMessage="Address" ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>
                <td>DoB:</td>
                <td>
                    <asp:TextBox ID="txtDoB" CssClass="signup_textbox cal_box" runat="server" />
                    <ajax:CalendarExtender ID="CalendarExtender1" TargetControlID="txtDoB" Format="dd/MM/yyyy" runat="server"></ajax:CalendarExtender> 
                </td>
            </tr>
            <tr>
                <td>Gender</td>
                <td>
                    <asp:RadioButtonList CssClass="signup_textbox" ID="GenderList" runat="server" RepeatDirection="Horizontal">
                        <asp:ListItem Selected="True">Male</asp:ListItem>
                        <asp:ListItem>Female</asp:ListItem>
                    </asp:RadioButtonList>
                </td>
            </tr>
            <tr>
                <th colspan="2" style="color:White; font-size:medium; padding-bottom:10px;" align="left">Professional Information</th>
            </tr>
            <tr>
                <td>Department:</td>
                <td>
                    <asp:DropDownList ID="ddlDept" CssClass="signup_textbox" runat="server"></asp:DropDownList>
                </td>
            </tr>
            <tr>
                <td>Designation:</td>
                <td><asp:TextBox ID="txtDesig" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqDesig" ControlToValidate="txtDesig" runat="server" Display="None" ErrorMessage="Designation" ></asp:RequiredFieldValidator>
                </td>

            </tr>
            <tr>    
                <td>Salary:</td>
                <td><asp:TextBox ID="txtSal" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqSal" ControlToValidate="txtSal" runat="server" Display="None" ErrorMessage="Salary" ></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator runat="server" id="rexSal" controltovalidate="txtSal" validationexpression="^[0-9]{5}$" errormessage="Salary must be max 5 digits" Display="None" />
                </td>
            </tr>
            <tr>
                <th colspan="2" style="color:White; font-size:medium; padding-bottom:10px;" align="left">Login Information</th>
            </tr>
            <tr>
                <td>Email:</td>
                <td>
                    <asp:TextBox ID="txtEmail" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqEmail" ControlToValidate="txtEmail" runat="server" Display="None" ErrorMessage="Email" ></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="valEmail" runat="server" ErrorMessage="Invalid Email" ControlToValidate="txtEmail" ValidationExpression="^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$" CssClass="error_msg" Display="none" />
                </td>
            </tr>
            <tr>
                <td>Username:</td>
                <td>
                    <asp:TextBox ID="txtUser" CssClass="signup_textbox" runat="server"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqUser" ControlToValidate="txtUser" runat="server" Display="None" EnableClientScript="true" SetFocusOnError="true" ErrorMessage="Username" ></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" Display="None" ControlToValidate="txtUser" ValidationExpression="^[\s\S]{3,}$" runat="server" ErrorMessage="Username must have at least 3 characters required."></asp:RegularExpressionValidator>
                </td>
            </tr>
            <tr>
                <td>Password:</td>
                <td><asp:TextBox ID="txtPass" CssClass="signup_textbox" runat="server" TextMode="Password"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqPass" ControlToValidate="txtPass" runat="server" Display="None" EnableClientScript="true" SetFocusOnError="true" ErrorMessage="Password" ></asp:RequiredFieldValidator>
                </td>
            </tr>
            <tr>    
                <td>Confirm Password:</td>
                <td><asp:TextBox ID="txtConfPass" CssClass="signup_textbox" runat="server" TextMode="Password"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="reqConfPass" ControlToValidate="txtConfPass" runat="server" Display="None" EnableClientScript="true" SetFocusOnError="true" ErrorMessage="Confirm Password" ></asp:RequiredFieldValidator>
                    <asp:CompareValidator ID="cmpPass" runat="server" ControlToCompare="txtPass" ControlToValidate="txtConfPass" ErrorMessage="Password must match" CssClass="error_msg" Display="None"></asp:CompareValidator>
                </td>
            </tr>
            <tr>
                <td align="center" colspan="2" style="padding:5px;"><span><asp:Button ID="btnRegister" Width="60" runat="server" Text="Register" CssClass="btnLogin" OnClick="btn_AddEmp" /></span>
                                   <span><asp:Button ID="btnClr" Width="60" runat="server" Text="Cancel" CssClass="btnLogin" OnClick="btn_ClearForm" /></span>
                </td>
            </tr>
        </table>
            <asp:Panel ID="errorsPanel" runat="server" Style="display: none; border-style: solid; border-width: thin; border-color: #FFDBCA" Width="175px" BackColor="White">
            <asp:ValidationSummary ID="valSummary" runat="server" CssClass="error_msg" HeaderText="You must enter following" DisplayMode="BulletList" EnableClientScript="true" ShowSummary="true" />
         </asp:Panel>
        </ContentTemplate>
        </asp:UpdatePanel>
            </div>
    </form>
</body>
</html>

這是我的代碼背后:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;

public partial class AddEmployee : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {


    }


    protected void btn_ClearForm(object sender, EventArgs e) //to clear form on IsPostBack or on press of cancel button
    {
        if (!IsPostBack)
        {
            clearForm();
        }
    }

    #region public functions

    public void clearForm()
    {
        txtName.Text = String.Empty;
        txtAddress.Text = String.Empty;
        txtDoB.Text = String.Empty;
        txtDesig.Text = String.Empty;
        txtSal.Text = String.Empty;
        txtEmail.Text = String.Empty;
        txtUser.Text = String.Empty;
        txtPass.Text = String.Empty;
        txtConfPass.Text = String.Empty;
        GenderList.Items[0].Selected = true;
        GenderList.Items[1].Selected = false;
    }

    #endregion

}

string.Empty沒有錯。 但是您不需要btn_ClearForm條件,因為btn_ClearForm處理程序將始終在回發時調用,並且如果!IsPostBack

// if (!IsPostBack) 
//{
    clearForm();
// }

您的代碼將是

protected void btn_ClearForm(object sender, EventArgs e) 
{       
        clearForm();       
}

解決了!

只需在取消按鈕上使用CausesValidation =“ false”即可在取消按鈕單擊事件時禁用驗證。

因為當您在控件上使用驗證但未在“取消”按鈕上使用CausesValidation =“ false”時,您的控件將被迫通過賦予它們的驗證條件,並且由於“取消”按鈕是為了清除表單而與檢查有效性無關表單字段中的數據,表單將被卡住。

因此,無論何時在控件上使用了驗證條件,只需確保不要單擊“取消/清除/重置”按鈕就可以觸發它們。

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM