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>";
}
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
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
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;
}
}
.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();
}
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>