visual validar validacion seleccionado saber preguntar net esta checar asp asp.net .net validation checkbox checkboxlist

asp.net - validacion - validar checkbox en c#



¿Cómo validar a un usuario para elegir al menos una casilla de verificación en CheckBoxList? (6)

Aquí hay otra solución que se puede considerar a través de Dado.Validators en GitHub.

<asp:CheckBoxList ID="cblCheckBoxList" runat="server"> <asp:ListItem Text="Check Box (empty)" Value="" /> <asp:ListItem Text="Check Box 1" Value="1" /> <asp:ListItem Text="Check Box 2" Value="2" /> <asp:ListItem Text="Check Box 3" Value="3" /> </asp:CheckBoxList> <Dado:RequiredFieldValidator runat="server" ControlToValidate="cblCheckBoxList" ValidationGroup="vlgSubmit" />

Ejemplo codebehind.aspx.cs

btnSubmit.Click += (a, b) => { Page.Validate("vlgSubmit"); if (Page.IsValid) { // Validation Successful } };

https://www.nuget.org/packages/Dado.Validators/

Ref .: Marque si una casilla de verificación está marcada en un grupo de casillas de verificación en el lado del cliente

Tengo un control CheckBoxList que quiero solicitar al usuario que marque al menos UNA casilla, no importa si comprueba cada uno, o 3, o incluso solo uno.

En el espíritu de los controles de validación de asp.net, ¿qué puedo usar para hacer cumplir esto? También estoy usando el extensor de validación Ajax, por lo que sería bueno si pudiera parecerse a otros controles, y no a algún método de validación de servidor cursi en el código subyacente.

<asp:CheckBoxList RepeatDirection="Horizontal" RepeatLayout="Table" RepeatColumns="3" ID="ckBoxListReasons" runat="server"> <asp:ListItem Text="Preliminary Construction" Value="prelim_construction" /> <asp:ListItem Text="Final Construction" Value="final_construction" /> <asp:ListItem Text="Construction Alteration" Value="construction_alteration" /> <asp:ListItem Text="Remodel" Value="remodel" /> <asp:ListItem Text="Color" Value="color" /> <asp:ListItem Text="Brick" Value="brick" /> <asp:ListItem Text="Exterior Lighting" Value="exterior_lighting" /> <asp:ListItem Text="Deck/Patio/Flatwork" Value="deck_patio_flatwork" /> <asp:ListItem Text="Fence/Screening" Value="fence_screening" /> <asp:ListItem Text="Landscape - Front" Value="landscape_front" /> <asp:ListItem Text="Landscape - Side/Rear" Value="landscape_side_rear" /> <asp:ListItem Text="Other" Value="other" /> </asp:CheckBoxList>


Aquí hay una implementación jQuery más limpia que permite una ClientValidationFunction para cualquier número de controles CheckBoxList en una página:

function ValidateCheckBoxList(sender, args) { args.IsValid = false; $("#" + sender.id).parent().find("table[id$="+sender.ControlId+"]").find(":checkbox").each(function () { if ($(this).attr("checked")) { args.IsValid = true; return; } }); }

Aquí está el marcado:

<asp:CheckBoxList runat="server" Id="cblOptions" DataTextField="Text" DataValueField="Id" /> <xx:CustomValidator Display="Dynamic" runat="server" ID="cblOptionsValidator" ControlId="cblOptions" ClientValidationFunction="ValidateCheckBoxList" ErrorMessage="One selection required." />

Y finalmente, el validador personalizado que permite que la función del cliente recupere el control objetivo por ID:

public class CustomValidator : System.Web.UI.WebControls.CustomValidator { public string ControlId { get; set; } protected override void OnLoad(EventArgs e) { if (Enabled) Page.ClientScript.RegisterExpandoAttribute(ClientID, "ControlId", ControlId); base.OnLoad(e); } }


Es fácil hacer este lado del servidor de validación, pero supongo que quieres hacerlo del lado del cliente.

JQuery puede hacer esto muy fácilmente siempre que tenga algo que todos los controles de casilla de verificación tengan en común para usar como un selector como clase (CssClass en su control .NET). Puede hacer una función JQuery simple y conectarla a un validador personalizado de ASP.NET. Recuerde que si utiliza la ruta del validador personalizado para asegurarse de que también lo verifique en el servidor, en caso de que JavaScript no funcione, no obtendrá una verificación gratuita del servidor como los otros validadores .NET.

Para obtener más información sobre validadores personalizados, consulte los siguientes enlaces: www.asp.net y MSDN

No necesita usar JQuery , solo hace que la función javascript itere y vea todos sus controles de casilla de verificación mucho más fácil, pero puede usar vainilla javascript si lo desea.

Aquí hay un ejemplo que encontré en: Enlace al original

<asp:CheckBoxList ID="chkModuleList"runat="server" > </asp:CheckBoxList> <asp:CustomValidator runat="server" ID="cvmodulelist" ClientValidationFunction="ValidateModuleList" ErrorMessage="Please Select Atleast one Module" ></asp:CustomValidator> // javascript to add to your aspx page function ValidateModuleList(source, args) { var chkListModules= document.getElementById (''<%= chkModuleList.ClientID %>''); var chkListinputs = chkListModules.getElementsByTagName("input"); for (var i=0;i<chkListinputs .length;i++) { if (chkListinputs [i].checked) { args.IsValid = true; return; } } args.IsValid = false; }

Nota al JQuery : JQuery es solo un pequeño archivo js que debe agregar a su página. Una vez que lo tenga incluido, puede usar todos los JQuery desee. No hay nada que instalar y será totalmente compatible con la próxima versión de Visual Studio, creo.


Mira este artículo de 4 chicos de Rolla:

http://aspnet.4guysfromrolla.com/articles/092006-1.aspx

Le muestran cómo crear un validador para los controles CheckBox y CheckBoxList que funciona exactamente como RequiredFieldValidator para los otros controles .NET. Tiene la validación del lado del servidor y la validación del lado del cliente. Lo bueno de eso es que puedes especificar un ValidationGroup y funcionará con el control ValidationSummary.

También hay un enlace en la parte inferior del artículo para descargar la fuente y usarla en su proyecto. Simplemente hace referencia al dll y registra los controles, y ya está listo para comenzar.


Pasa por cada uno de los elementos en ckBoxListReasons. Cada elemento será del tipo ''ListItem''.

El ListItem tendrá una propiedad llamada ''Seleccionado'' que es un booleano. Es cierto cuando se selecciona ese elemento. Algo como:

Dim bolSelectionMade As Boolean = False For Each item As ListItem in ckBoxListReasons.Items If item.Selected = True Then bolSelectionMade = True End If Next

bolSelectionMade se establecerá en verdadero si el usuario ha realizado al menos una selección. Puede usar eso para establecer el estado Válido de cualquier control de validador particular que desee.

¡Espero que esto ayude!

Ricardo.


Puede usar un CustomValidator para eso con un poco de javascript.

<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Select at least one" ClientValidationFunction="checkCheckBoxList"></asp:CustomValidator> <script type="text/javascript"> function checkCheckBoxList(oSrc, args) { var isValid = false; $("#<%= CheckBoxList1.ClientID %> input[type=''checkbox'']:checked").each(function (i, obj) { isValid = true; }); args.IsValid = isValid; } </script>

Y para RadioButtonList

<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Select at least one" ClientValidationFunction="checkRadioButtonList"></asp:CustomValidator> <script type="text/javascript"> function checkRadioButtonList(oSrc, args) { if ($("input[name=''<%= RadioButtonList1.UniqueID %>'']:checked").val() == null) { args.IsValid = false; } else { args.IsValid = true; } } </script>