jorame
jorame

Reputation: 2207

How to validate if a RadioButtonList is check/select it in C#?

I have a RadioButtonList which is being populated from a Database, users need to at at least check/select one of the RadioButtons. How can I make sure they check/select the RadioButton? I tried many different ways but no luck, here is my code. I'm also trying to alert them of the uncheck radiobutton.

What I'm trying to do is to validate the RadioButtonList is checked/selected.

    if (cblstatus.SelectedItem.Value == "1")
    {
        //Create Category
        con.Open();
        SqlCommand departament = new SqlCommand("insert into categories(ca_name, ca_number, ca_status, ca_department, ca_date, ca_time, ca_user) " +
        "values('" + category.Text + "', '" + number.Text + "', 'Y', '" + catdepartment.SelectedValue + "', '" + date + "', '" + time + "', '" + user + "')", con);
        departament.ExecuteNonQuery();
        con.Close();
    }
    else if (cblstatus.SelectedItem.Value == "2")
    {
        //Create Category
        con.Open();
        SqlCommand departament = new SqlCommand("insert into categories(ca_name, ca_number, ca_status, ca_department, ca_date, ca_time, ca_user) " +
        "values('" + category.Text + "', '" + number.Text + "', 'N', '" + catdepartment.SelectedValue + "', '" + date + "', '" + time + "', '" + user + "')", con);
        departament.ExecuteNonQuery();
        con.Close();
    }
    else if (cblstatus. == null)
    {
        alert.InnerHtml = "<div id=\"warning\" class=\"message warning\">Warning! Please select a department.</div>" +
        "<script>" +
            "setTimeout(function () { $('#success').fadeOut(); }, 2000);" +
        "</script>";
    }

Upvotes: 6

Views: 90033

Answers (5)

John
John

Reputation: 1

 Imports System.IO
 Imports System.Text
 Imports System
 
 Public Class WebForm1
     Inherits System.Web.UI.Page

     Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     End Sub
 
     'Protected Sub Calendar1_SelectionChanged(sender As Object, e As EventArgs)
     '    TextBox1.Text = Calendar1.SelectedDate.ToShortDateString()
     '    Calendar1.Visible = False
     'End Sub
 
     'Protected Sub LinkButton1_Click(sender As Object, e As EventArgs)
     '    'Calendar1.Visible = True    
     'End Sub
 
     'Protected Sub LinkButton2_Click(sender As Object, e As EventArgs)
     '    Calendar2.Visible = True
     'End Sub
 
     'Protected Sub Calendar2_SelectionChanged(sender As Object, e As EventArgs)
     '    TextBox2.Text = Calendar2.SelectedDate.ToShortDateString()
     '    Calendar2.Visible = False
     'End Sub
 
     Public Sub DownloadCSV()
         Dim csvPath1 As String = "D:\CSVFile1.csv"
 
         'Download and read all Text within the uploaded Text file.
         Dim csvContentStr1 As String = File.ReadAllText(csvPath1)
 
         Dim split As String() = csvContentStr1.Split(","c)
 
         'Here you can see the output as CSV content.
         'Response.Write(csvContentStr)
     End Sub
 
     Public Sub UploadCSV()
         Dim csvContent As New StringBuilder()
 
         DownloadCSV()
 
         Dim dt1 As DateTime = Convert.ToDateTime(TextBox1.Text)
         Dim dt2 As DateTime = Convert.ToDateTime(TextBox2.Text)
         Dim dt3 As TimeSpan = dt2.Subtract(dt1)
         Dim NoOfDays As Integer = dt3.Days + 1
         'TextBox3.Text = NoOfDays.ToString
 
         Dim index As DateTime = Convert.ToDateTime(TextBox1.Text)
         While index <= Convert.ToDateTime(TextBox2.Text)
             If index.DayOfWeek = DayOfWeek.Saturday OrElse index.DayOfWeek = DayOfWeek.Sunday Then
                 NoOfDays = NoOfDays - 1
             End If
             index = index.AddDays(1)
 
         End While
 
         Dim a1 As String = TextBox1.ToString()
         Dim b1 As String = TextBox2.ToString()
         Dim c1 As String = RadioButtonList1.Text.ToString()
         Dim d1 As String = TextBox3.ToString()
         
         Dim z1 As String = TextBox1.Text + "," + TextBox2.Text + "," + RadioButtonList1.Text + "," + TextBox3.Text + "," + NoOfDays.ToString
 
         'csvContent.AppendLine("From Date,To Date,Laeve Type,Reason")
         csvContent.AppendLine(z1)
 
         Dim csvPath As String = "D:\CSVFile2.csv"
 
         ' Save or upload CSV format File (.csv)
         File.AppendAllText(csvPath, csvContent.ToString())
     End Sub
 
     Protected Sub Button1_Click(sender As Object, e As EventArgs)
         If Page.IsValid Then
             Dim a1 As String = TextBox1.ToString()
             Dim b1 As String = TextBox2.ToString()
             Dim c1 As String = RadioButtonList1.Text.ToString()
             Dim d1 As String = TextBox3.ToString()

             UploadCSV()
             DownloadCSV()
         End If
 
     End Sub
 
     Protected Sub Button2_Click(sender As Object, e As EventArgs)
     End Sub
 
 End Class

Aspx Code

 <%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site1.Master" CodeBehind="WebForm1.aspx.vb" Inherits="Leave12.WebForm1" %>
 <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
 </asp:Content>
 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
     
    <table>
        <tr>
           <%-- <td>
                <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click" >Select From Date.....</asp:LinkButton>
            </td>
            <td>
                <asp:Calendar ID="Calendar1" runat="server" Visible="false" OnSelectionChanged="Calendar1_SelectionChanged" ></asp:Calendar>
            </td>
            <td>
                <asp:TextBox ID="TextBox1" ReadOnly="true" runat="server"></asp:TextBox>
            </td>--%> 
            <td>
            <asp:Label ID="Label1" runat="server" Text="Please enter From Date"></asp:Label>
           </td>
            <td>
                <asp:TextBox ID="TextBox1" TextMode="Date" runat="server"></asp:TextBox>
            </td>
            <td>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Please enter From Date" Display="Dynamic" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
            </td>
        </tr>
        <tr>
           <%-- <td>
                <asp:LinkButton ID="LinkButton2" runat="server" OnClick="LinkButton2_Click">Select To Date.....</asp:LinkButton>
            </td>
            <td>
                <asp:Calendar ID="Calendar2" runat="server" Visible="false" OnSelectionChanged="Calendar2_SelectionChanged" ></asp:Calendar>
            </td>
            <td>
                <asp:TextBox ID="TextBox2" ReadOnly="true" runat="server"></asp:TextBox>
            </td>--%>
            <%--<td>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Please enter To Date" Display="Dynamic" ControlToValidate="TextBox2"></asp:RequiredFieldValidator>
            </td>--%>
            <td>
                <asp:Label ID="Label2" runat="server" Text="Please enter To Date"></asp:Label>
            </td>
            <td>
                <asp:TextBox ID="TextBox2" TextMode="Date" runat="server"></asp:TextBox>
            </td>
            <td>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Please enter To Date" Display="Dynamic" ControlToValidate="TextBox2"></asp:RequiredFieldValidator>
            </td>
            <td>
                <asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="To Date should be greater than From Date" Display="Dynamic" Operator="GreaterThanEqual" ControlToCompare="TextBox1" ControlToValidate="TextBox2"></asp:CompareValidator>
            </td>
        </tr>
        <tr>
            <td>
                <asp:Label ID="Label3" runat="server" Text="Please select Leave Type"></asp:Label>
            </td>
            <td>
                <asp:RadioButtonList RepeatDirection="Horizontal" ID="RadioButtonList1"   runat="server" >
                    <asp:ListItem Selected="True" >Casual Leave</asp:ListItem>
                    <asp:ListItem>Sick Leave</asp:ListItem>
                    <asp:ListItem>Earned Leave</asp:ListItem>
                </asp:RadioButtonList>    
            </td>
        </tr>
        <%--<tr>
            <td>
                <asp:Label ID="Label2" runat="server" Text="Reason"></asp:Label>
            </td>
            <td>
                <asp:TextBox ID="TextBox3" TextMode="MultiLine" Rows="5" Columns="50" runat="server"></asp:TextBox>
            </td>
            <td>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ErrorMessage="Please select Reason" ControlToValidate="TextBox3" Display="Dynamic"></asp:RequiredFieldValidator>
            </td>
        </tr>--%>
        <tr>
            <td>
                <asp:Label ID="Label4" runat="server" Text="Reason"></asp:Label>
            </td>
            <td>
                <asp:TextBox ID="TextBox3" TextMode="MultiLine" MaxLength="250" Rows="5" Columns="50" runat="server"></asp:TextBox>
            </td>
            <td>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ErrorMessage="Please provide reason for leave" Display="Dynamic" ControlToValidate="TextBox3"></asp:RequiredFieldValidator>
            </td>
            <td>
                <asp:RegularExpressionValidator ID="RegularExpressionValidator1" ValidationExpression="^[\s\S]{0,100}$" runat="server" ErrorMessage="Please enter maximum of 250 characters" Display="Dynamic" ControlToValidate="TextBox3"></asp:RegularExpressionValidator>
            </td>
        </tr>
        <tr>
            <td>
                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" />
            </td>
            <td>
                <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Reset" />
            </td>
        </tr>
    </table>
 </asp:Content>

Upvotes: 0

Wahtever
Wahtever

Reputation: 3678

instead of doing it on the code behind use an asp.net required field validator:

here is an example:

  <asp:RadioButtonList runat="server" ID="gender" RepeatDirection="Horizontal"  RepeatLayout="Flow" CssClass="labels">
    <asp:ListItem Text="Male" Value="Male" />
    <asp:ListItem Text="Female" Value="Female" />
  </asp:RadioButtonList>

    <asp:RequiredFieldValidator runat="server" 
        ID="genderRequired" Display="Dynamic"
        ControlToValidate="gender" 
        ErrorMessage="This is an Error"
        ValidationGroup="signUp">*</asp:RequiredFieldValidator>

on the code behind you can create a blank div and then add text to it on error and you can use the jquery change function to manipulate it further:

    if (gender.SelectedItem.Value == "Male") 
    {
        //do stuff
    }
    else if (gender.SelectedItem.Value == "Female")
    {
        //do stuff
    }
    else 
    {
        errorDiv.InnerText = "Error Messeage";
    }

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.requiredfieldvalidator.aspx

Upvotes: 15

Vijay Kumbhoje
Vijay Kumbhoje

Reputation: 1441

Can use this approach but totally code behind

 public bool ValidateRadioButtonList()
{
    bool rbchecked= false;
    for (int i = 0; i < RadioButtonList1.Items.Count - 1; i++)
    {
        if (RadioButtonList1.Items[i].Selected==true)
        {
            rbchecked = true;
        }
    }
    if (rbchecked == true)
    {
        lblError.Text = string.Empty;
        return true;
    }
    else
    {
        lblError.Text = "Please select RadioButton!";
        return false;
    }
}

Upvotes: 4

helavin4ik
helavin4ik

Reputation: 1

.aspx :

<asp:RadioButtonList ID="rbAny" runat="server" >
 <asp:ListItem Value="rb1" Text="something1"></asp:ListItem>
 <asp:ListItem Value="rb2" Text="something2"></asp:ListItem>
 <asp:ListItem Value="rb3" Text="something3"></asp:ListItem>
</asp:RadioButtonList>

.aspx.cs :

add/insert values in ViewState (for example by clicking a buttons):

protected void btnSend_Click(object sender, EventArgs e)
{
    foreach (ListItem r in rbAny.Items) 
        if (r.Selected) ViewState["anyValue"] = r.Text;
}

read value from ViewState:

protected void btnShow_Click(object sender, EventArgs e)
{
    StringBuilder str = new StringBuilder();
    str.Append("anyValue: " + ViewState["anyValue"]);
    someLabel.Text = str.ToString();
}

Upvotes: 0

Syed Mohamed
Syed Mohamed

Reputation: 1379

We can use normal RequiredFieldValidation with not defining InitialValue property

<asp:RadioButtonList runat="server" ID="Radioyesno" RepeatDirection="Horizontal">
 <asp:ListItem>Yes</asp:ListItem>
 <asp:ListItem>No</asp:ListItem>
</asp:RadioButtonList>
<asp:RequiredFieldValidator runat="server" ID="RFV123" ValidationGroup="VG1" ControlToValidate="Radioyes" ErrorMessage="PLEASE SELECT YES/NO"/>

it works for me, no complex thinking

Upvotes: 5

Related Questions