2012-01-07 69 views
6

Tengo RadioButtonList que se está llenando desde una base de datos, los usuarios necesitan al menos marcar/seleccionar uno de los RadioButtons. ¿Cómo puedo asegurarme de que marquen/seleccionen RadioButton? Intenté muchas maneras diferentes pero no tuve suerte, aquí está mi código. También estoy tratando de alertarlos sobre la desactivación del botón de radio.¿Cómo validar si RadioButtonList es verificar/seleccionarlo en C#?

Lo que intento hacer es validar que RadioButtonList esté marcada/seleccionada.

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

Respuesta

11

en lugar de hacerlo en el código detrás de usar un validador asp.net campo requerido:

aquí es un ejemplo:

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

en el código Detrás de usted puede crear un div en blanco y luego agregarle texto en caso de error y puede usar la función de cambio de jquery para manipularlo. aún más:

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

+0

Por lo tanto, no puedo hacer esto desde código detrás? – jorame

+0

Respuesta principal actualizada – Wahtever

+0

Sí, puede usar esto para validar también del lado del servidor, todo lo que tiene que hacer es agregar el parámetro 'EnableClientScript =" False "' al 'RequiredFieldValidator' y usar' if (genderRequired.IsValid) {. ..} 'lado del servidor. Si entendí la pregunta correctamente . . – Roise

4

podemos utilizar RequiredFieldValidation normal con no definir InitialValue propiedad

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

funciona para mí, ningún pensamiento complejo

0

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

valores de adición/inserción en ViewState (por ejemplo haciendo clic en un botones):

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

valor leído de ViewState:

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

puede utilizar este enfoque, pero totalmente código detrás

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; 
    } 
} 
0
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 

Código 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> 
Cuestiones relacionadas