web-dev-qa-db-fra.com

Comment valider si une RadioButtonList est cochée/sélectionnée en C #?

J'ai une RadioButtonList qui est renseignée à partir d'une base de données, les utilisateurs doivent au moins vérifier/sélectionner l'un des boutons Radio. Comment puis-je m'assurer qu'ils vérifient/sélectionnent RadioButton? J'ai essayé beaucoup de façons différentes mais pas de chance, voici mon code. J'essaie également de les alerter du radiobutton décoché.

Ce que j'essaie de faire est de valider que RadioButtonList est cochée/sélectionnée.

    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>";
    }
6
jorame

au lieu de le faire sur le code derrière, utilisez un validateur de champ obligatoire asp.net:

voici un exemple:

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

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

sur le code derrière, vous pouvez créer un div vierge puis y ajouter du texte en cas d'erreur. Vous pouvez également utiliser la fonction de changement jquery pour le manipuler davantage:

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

13
Wahtever

Nous pouvons utiliser RequiredFieldValidation normal sans définir la propriété InitialValue

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

ça marche pour moi, pas de pensée complexe

5
Syed Mohamed

Peut utiliser cette approche mais totalement coder derrière

 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;
    }
}
4
Vijay Kumbhoje

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

ajouter/insérer des valeurs dans ViewState (par exemple en cliquant sur un bouton):

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

Lire la valeur de ViewState:

protected void btnShow_Click(object sender, EventArgs e)
{
    StringBuilder str = new StringBuilder();
    str.Append("anyValue: " + ViewState["anyValue"]);
    someLabel.Text = str.ToString();
}
0
helavin4ik
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

Code Aspx

<%@ 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>
0
John