seleccionado - validacion de checkbox en c#




Cómo contar las casillas de verificación en un formulario asp.net (5)

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


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.


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

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




webforms