Question

Q: All the RequiredFieldValidators are working when I make the btnSubmitCheckup_Click property empty. But if I put a simple code inside it, the validators are not working anymore and more, it will execute the simple code I placed inside the Click property of the button.

How will prevent the program from going forward if the required fields are blank? I've set the ControlToValidate and it works flawlessly when there is no code inside the btnSubmitCheckup_Click but if I try to put a code inside it, it will go forward and disregard the RequiredFieldValidator.

protected void btnSubmitCheckup_Click(object sender, EventArgs e)
        {
            Response.Write("asdasda"); ////will work even all other textboxes are empty but validators won't appear
            //_con.Open();
            //SqlCommand NewCheckup = new SqlCommand("dbo.NewCheckup", _con);
            //NewCheckup.CommandType = CommandType.StoredProcedure;
            //NewCheckup.Parameters.Add("@PatientID", SqlDbType.Int).Value = RadioButtonList_Patient.SelectedValue;
            //NewCheckup.Parameters.Add("@DeptCode", SqlDbType.VarChar).Value = RadioButtonList_Department.SelectedValue;
            //NewCheckup.Parameters.Add("@EmpID", SqlDbType.Int).Value = RadioButtonList_Employee.SelectedValue;
            //NewCheckup.Parameters.Add("@CheckupDate", SqlDbType.Date).Value = BasicDatePicker1.SelectedDate;
            //NewCheckup.Parameters.Add("@Diagnosis", SqlDbType.VarChar).Value = txtDiagnosis.Text;
            //NewCheckup.ExecuteNonQuery();
            //_con.Close();
            //Response.Write("<script>Alert('Checkup Successfully recorded!')</script>");
        }

This is my source

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NewCheckup.aspx.cs" Inherits="Clinic_WebDev.NewCheckup" %>

<%@ Register assembly="BasicFrame.WebControls.BasicDatePicker" namespace="BasicFrame.WebControls" tagprefix="BDP" %>

<!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 runat="server">
    <title>Bargamed Clinic - New Checkup</title>
    <style type="text/css">
        .style1
        {
            width: 100%;
        }
        .style2
        {
            width: 136px;
        }
        .style3
        {
            width: 250px;
        }
        #TextArea1
        {
            height: 104px;
            width: 272px;
        }
    </style>
</head>
<body>
    <table class="auto-style1">
            <tr>
                <td>
                    <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/InsertProcedure.aspx">Insert Procedure</asp:HyperLink>
                </td>
                <td>
                    <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="~/InsertPatient.aspx">Insert Patient</asp:HyperLink>
                </td>
                <td>
                    <asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl="~/InsertEmployee.aspx">Insert Employee</asp:HyperLink>
                </td>
                <td>
                    <asp:HyperLink ID="HyperLink4" runat="server" NavigateUrl="~/InsertDepartment.aspx">Insert Department</asp:HyperLink>
                </td>
                <td>
                    <asp:HyperLink ID="HyperLink5" runat="server" NavigateUrl="~/NewCheckup.aspx">New Checkup</asp:HyperLink>
                </td>
            </tr>
    </table>
    <form id="form1" runat="server">
    <table class="style1">
        <tr>
            <td align="right" bgcolor="#66FF66" class="style2">
                Name of Patient</td>
            <td bgcolor="#CCFFCC" class="style3">
                <asp:TextBox ID="txtPatientName" runat="server" AutoPostBack="True" 
                    TextMode="Search" Width="170px"></asp:TextBox>
            </td>
            <td bgcolor="#66FF66" style="margin-left: 80px">
                Press Enter to search a patient
                <br />
                <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" 
                    ControlToValidate="txtPatientName" ErrorMessage="Please search for a patient" 
                    Font-Italic="True" Font-Names="Segoe UI" ForeColor="#666633" 
                    EnableClientScript="False"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td align="right" bgcolor="#66FF66" class="style2">
                Patient</td>
            <td bgcolor="#CCFFCC" class="style3">
                <asp:RadioButtonList ID="RadioButtonList_Patient" runat="server" 
                    AutoPostBack="True" DataSourceID="SqlDataSource3" DataTextField="PatientName" 
                    DataValueField="PatientID">
                </asp:RadioButtonList>
                <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:CLINICConnectionString %>" 
                    SelectCommand="SELECT PatientID, FirstName + ' ' + MiddleName + ' ' + LastName AS PatientName FROM PATIENT WHERE (FirstName + ' ' + MiddleName + ' ' + LastName LIKE '%' + @PatientName + '%')">
                    <SelectParameters>
                        <asp:ControlParameter ControlID="txtPatientName" Name="PatientName" 
                            PropertyName="Text" />
                    </SelectParameters>
                </asp:SqlDataSource>
            </td>
            <td bgcolor="#66FF66">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" 
                    ControlToValidate="RadioButtonList_Patient" 
                    ErrorMessage="Please select the patient" Font-Italic="True" Font-Names="Segoe UI" 
                    ForeColor="#666633"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td align="right" bgcolor="#66FF66" class="style2">
                Department
            </td>
            <td bgcolor="#CCFFCC" class="style3">
                <asp:RadioButtonList ID="RadioButtonList_Department" runat="server" 
                    AutoPostBack="True" DataSourceID="SqlDataSource1" DataTextField="DeptName" 
                    DataValueField="DeptCode" 
                    onselectedindexchanged="RadioButtonList_Department_SelectedIndexChanged">
                </asp:RadioButtonList>
                <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:CLINICConnectionString %>" 
                    SelectCommand="SELECT DeptCode, DeptName, Status FROM DEPARTMENT">
                </asp:SqlDataSource>
            </td>
            <td bgcolor="#66FF66">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                    ControlToValidate="RadioButtonList_Department" 
                    ErrorMessage="Please select the department" Font-Italic="True" 
                    Font-Names="Segoe UI" ForeColor="#666633"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td align="right" bgcolor="#66FF66" class="style2">
                Employee</td>
            <td bgcolor="#CCFFCC" class="style3">
                <asp:RadioButtonList ID="RadioButtonList_Employee" runat="server" 
                    DataSourceID="SqlDataSource2" DataTextField="EmpName" DataValueField="EmpID">
                </asp:RadioButtonList>
                <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:CLINICConnectionString %>" 
                    SelectCommand="SELECT EmpID, EmpName, EmpStatus, Contact FROM EMPLOYEE WHERE (EmpID IN (SELECT EmpID FROM EMPLOYEE_SPECIALIZATION WHERE (DeptCode LIKE @DeptCode)))">
                    <SelectParameters>
                        <asp:ControlParameter ControlID="RadioButtonList_Department" 
                            DefaultValue="None" Name="DeptCode" PropertyName="SelectedValue" />
                    </SelectParameters>
                </asp:SqlDataSource>
            </td>
            <td bgcolor="#66FF66">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                    ControlToValidate="RadioButtonList_Employee" 
                    ErrorMessage="Please select the employee" Font-Italic="True" 
                    Font-Names="Segoe UI" ForeColor="#666633"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td align="right" bgcolor="#66FF66" class="style2">
                <asp:Label ID="Label1" runat="server" Text="Date of Checkup"></asp:Label>
            </td>
            <td bgcolor="#CCFFCC" class="style3">
                <BDP:BasicDatePicker ID="BasicDatePicker1" runat="server" />
            </td>
            <td bgcolor="#66FF66">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
                    ControlToValidate="BasicDatePicker1" 
                    ErrorMessage="Please select the date of checkup" Font-Italic="True" 
                    Font-Names="Segoe UI" ForeColor="#666633"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td align="right" bgcolor="#66FF66" class="style2">
                <asp:Label ID="Label2" runat="server" Text="Diagnosis"></asp:Label>
            </td>
            <td bgcolor="#CCFFCC" class="style3">
                <asp:TextBox ID="txtDiagnosis" runat="server" Height="67px" 
                    TextMode="MultiLine" Width="247px"></asp:TextBox>
            </td>
            <td bgcolor="#66FF66">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
                    ControlToValidate="txtDiagnosis" ErrorMessage="Please put the diagnosis" 
                    Font-Italic="True" Font-Names="Segoe UI" ForeColor="#666633" 
                    ValidationGroup="ValidationGroupDaw"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
            <td bgcolor="#66FF66" class="style2">
                &nbsp;</td>
            <td align="center" bgcolor="#CCFFCC" class="style3">
                <asp:Button ID="btnSubmitCheckup" runat="server" 
                    onclick="btnSubmitCheckup_Click" PostBackUrl="~/NewCheckup.aspx" 
                    Text="Submit Checkup" CausesValidation="False" 
                    ValidationGroup="ValidationGroupDaw" />
            </td>
            <td bgcolor="#66FF66">
                &nbsp;</td>
        </tr>
        <tr>
            <td bgcolor="#66FF66" class="style2">
                &nbsp;</td>
            <td bgcolor="#CCFFCC" class="style3">
                &nbsp;</td>
            <td bgcolor="#66FF66">
                &nbsp;</td>
        </tr>
    </table>
    </form>
</body>
</html>
Was it helpful?

Solution

are you talking your button is not working with the validation? try change your CausesValidation to true, cheer :)

  <td align="center" bgcolor="#CCFFCC" class="style3">
            <asp:Button ID="btnSubmitCheckup" runat="server" 
                onclick="btnSubmitCheckup_Click" PostBackUrl="~/NewCheckup.aspx" 
                Text="Submit Checkup" CausesValidation="true" 
                ValidationGroup="ValidationGroupDaw" />
        </td>

OTHER TIPS

First of all, your button contains CausesValidation="False" which will make it not call the client side validation.

The error occuring really is that it DOES validate if you don't fill in any code, but this might be because you can't tell that the button event was called regardless.

As for ensuring validation is called, you should add validation on your button click event as such:

protected void btnSubmitCheckup_Click(object sender, EventArgs e)
    {
        validate();
        if(page.IsValid)
        {
          //your code here
        } 
       else
       {
         //if you want to do something special if validation fails
       }
    }
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top