validacion seleccionado saber net esta ejemplos como checar asp c# asp.net checkbox webforms

c# - seleccionado - Cómo contar las casillas de verificación en un formulario asp.net



if checkbox is checked c# (7)

Creo que el problema es que sus casillas de verificación no se ejecutan en el servidor. Como tales, no tienen control "asignado" en el código subyacente. Intente agregar el atributo runat = "server" a sus casillas de verificación. Al igual que tienes en tu panel.

ASP.NET:

<asp:Panel ID="pnlFilter" runat="server"> <div class="dvFilter"> <input type="checkbox" id="cb01" checked="checked" /> <label for="cb01">All</label> </div> <div class="dvFilter"> <input type="checkbox" id="cb02" checked="checked" /> <label for="cb02">None</label> </div> </asp:Panel>

DO#:

foreach (Control item in this.form1.Controls) { System.Web.UI.HtmlControls.HtmlInputCheckBox _cbx = item as System.Web.UI.HtmlControls.HtmlInputCheckBox; if (_cbx != null) { if (_cbx.Checked) { //Do something: Response.Write(_cbx.Name + " was checked.<br />"); } } }

_cbx un valor null para la variable _cbx .

¿Cómo puedo actualizarlo para poder obtener la ID de todas las casillas de verificación del tipo de entrada?

Intenté esta respuesta: cuente el número de cuadros de texto y cuadros de verificación en un formulario pero tampoco funcionó para mí.


En primer lugar, debe agregar runat="server" o cambiarlos a asp:CheckBox controles asp:CheckBox .

Pero la razón por la que no puede encontrarlos si los agrega es porque tienen otro control. Así que pnlFilter en pnlFilter .

<asp:Panel ID="pnlFilter" runat="server"> <div class="dvFilter"> <input type="checkbox" id="cb01" checked="checked" runat="server" /> <label for="cb01">All</label> </div> <div class="dvFilter"> <input type="checkbox" id="cb02" checked="checked" runat="server" /> <label for="cb02">None</label> </div> </asp:Panel>

Código detrás

foreach (Control item in pnlFilter.Controls) { HtmlInputCheckBox _cbx = item as HtmlInputCheckBox; if (_cbx != null) { if (_cbx.Checked) { //Do something: Response.Write(_cbx.Name + " was checked.<br />"); } } }


Necesita analizar el DOM si desea usar <input type="checkbox"> .

Te aconsejo que uses <asp:CheckBox> lugar de <input type="checkbox"> . Entonces puedes acceder a tus controles desde c #

En tu búsqueda:
var _cbx = item as System.Web.UI.WebControls.CheckBox;

Puede obtener todas las casillas de verificación sin pasar por todos los controles.
Use LINQ:
this.form1.Controls.Where(c=>c.GetType() == typeof(CheckBox))


Puedes usar GridView. Y el lado del código hace esto-

for (int i = 0; i < **yourGridViewId** .Rows.Count; i++) { CheckBox cb = ((CheckBox)**yourGridViewId** .Rows[i].FindControl(" **yourCheckboxId**")); .... }


Utilizar esta:

foreach (HtmlElement element in webBrowser1.Document.All) { System.Web.UI.HtmlControls.HtmlInputCheckBox _cbx = element as System.Web.UI.HtmlControls.HtmlInputCheckBox; if (_cbx != null) { if (_cbx.Checked) { //Do something: Response.Write(_cbx.Name + " was checked.<br />"); } } }


Creo que la respuesta es una combinación de todos los cambios sugeridos. Haga que las casillas de verificación funcionen en el servidor para tener ''m disponible en el servidor:

<asp:Panel ID="pnlFilter" runat="server"> <div class="dvFilter"> <input type="checkbox" id="cb01" checked="checked" runat="server" /> <label for="cb01">All</label> </div> <div class="dvFilter"> <input type="checkbox" id="cb02" checked="checked" runat="server" /> <label for="cb02">None</label> </div> </asp:Panel>

Y como se sugiere, intente los (sub) controles del panel:

foreach (Control item in this.pnlFilter.Controls) { System.Web.UI.HtmlControls.HtmlInputCheckBox _cbx = item as System.Web.UI.HtmlControls.HtmlInputCheckBox; if (_cbx != null) { if (_cbx.Checked) { //Do something: Response.Write(_cbx.Name + " was checked.<br />"); } } }

O si cambió las casillas de verificación a asp:Checkbox entonces el tipo sería System.Web.UI.WebControls.CheckBox


Creo que sería mejor acceder a las herramientas de front-end mediante el proceso de front-end.

Por ejemplo, recopile identificadores de casilla de verificación marcados que necesita de JQuery y guárdelos dentro de HiddenField luego HiddenField solicitud.

Ejemplo

<asp:Panel ID="pnlFilter" runat="server"> <div class="dvFilter"> <input type="checkbox" id="cb01" checked="checked" /> <label for="cb01">All</label> </div> <div class="dvFilter"> <input type="checkbox" id="cb02" checked="checked" /> <label for="cb02">None</label> </div> <input type="hidden" id="hdfIds" name="hdfIds" /> </asp:Panel> <asp:Button ID="Button1" runat="server" Text="Button" />

Parte de JQuery (enlace JQuery & json2 lib primero)

function recoverCbxStatus() { if (hdfIds.value) { var ids = JSON.parse(hdfIds.value); ids.forEach(function (id) { $(''#'' + id).prop(''checked'', true); }); } } function refreshIds() { var ids = []; $(''input:checkbox[id^="cb"]:checked'').each(function () { ids.push($(this).attr("id")); }); hdfIds.value = JSON.stringify(ids); } $(document).ready(function () { recoverCbxStatus(); refreshIds(); }); $(''input:checkbox[id^="cb"]'').change(function () { refreshIds(); });

Back-end (Nuget Json.NET)

protected void Page_Load(object sender, EventArgs e) { string idsJson = Request["hdfIds"]; List<string> ids; if (idsJson != null) { ids = JsonConvert.DeserializeObject<List<string>>(idsJson); Response.Write("count: " + ids.Count); } }