Pregunta

Soy consciente de que el control .NET CheckBox predeterminado no admite la propiedad Value. Esto me parece extraño porque el control de entrada admite el valor como parte de la especificación html.

¿Entonces mi pregunta es si alguien aquí conoce o no un control de usuario personalizado para asp.net que actúe de manera similar al estándar ASP .NET CheckBox y CheckBoxList?

¿Fue útil?

Solución 5

Parece que los valores no se representan en el html pero aún se almacenan en el estado de vista. Así que pude extraer el valor en el lado del servidor cuando accedí al objeto ListItem en CheckboxList.Items ()

Otros consejos

Tal vez estoy malinterpretando su pregunta, pero ¿sabe que también puede usar los controles HTML típicos?

Por ejemplo, cree una página ASPX y agregue la siguiente fuente:

    <div>
            <input type="checkbox" runat="server" id="chkBox" value="test" />
            <asp:Label ID="lblCheckboxValue" runat="server" />
    </div>

    <asp:Button runat="server" OnClick="Button_Click" />

Luego, en su código detrás, agregue el siguiente código:

protected void Button_Click(object sender, EventArgs e)
        {
            if (chkBox.Checked)
                lblCheckboxValue.Text = chkBox.Value;
            else
                lblCheckboxValue.Text = "";

        }

Puede establecer la propiedad de valor de la casilla de verificación html a lo que quiera.

Si solo necesita acceder a él en el lado del servidor, puede crear fácilmente un control de servidor que herede el control de casilla de verificación y agregar una propiedad llamada valor que se puede establecer y recuperar desde el lado del servidor.

Sin embargo, si necesita acceder desde el lado del cliente, tendrá que imaginarse lo que representa el control del servidor, probablemente una combinación de una casilla de verificación y un campo oculto en el que el campo oculto contiene el valor.

Si todo lo que está haciendo es extraer el valor de las casillas marcadas en el lado del servidor, me imagino que una simple extensión del control de la casilla de verificación sería suficiente: agregue una propiedad adicional que se puede establecer y recuperar del servidor lado ... caminar en el parque.

No, no son lo mismo

La función en la que estoy trabajando requiere que se muestre una lista de actualizaciones de productos como una lista de Casillas de verificación. Según qué casillas de verificación están & Quot; marcado & Quot; Necesitaré agregarlos al producto. Los elementos en CheckBoxList son dinámicos, por lo que cuando itero sobre los elementos marcados necesito algún tipo de identificador único. El & Quot; Comprobado & Quot; el valor es solo un booleano

Lo que MS ha hecho aquí es crear sus controles ASP con una sensación de .net para ellos. Sin embargo, dado que se supone que funcionan con navegadores, renderizan como controles HTML estándar.

Entonces, en el código subyacente cs / vb, ves .Checked (bool), mientras que en el cliente / javascript ves .value.

Si lo que desea es un identificador único, entonces debe estar buscando ID o ClientID. Alternativamente, puede agregar un atributo al checkboxt (.Attributes.Add ()) y usarlo.

Puede crear su propio control personalizado anulando CheckBox. Aquí hay un ejemplo que acabo de crear para agregar una propiedad Value disponible en el servidor y el lado del cliente:

public class ValueCheckBox : CheckBox
{
    public string Value
    {
        get;
        set;
    }

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        writer.AddAttribute("value", this.Value);
        base.Render(writer);
    }
}

Esta es una vieja pregunta, pero las cosas han cambiado. Primero, en asp.net 4.6, el atributo de valor se establecerá en la casilla de verificación. Pocas de estas respuestas son relevantes para CheckBoxList, que utiliza la clase ListItem para generar casillas de verificación.

Mi solución para pre-4.6 es agregar un atributo de datos. Esto crea un control <span> alrededor de la casilla de verificación y la etiqueta que puede encontrar con javascript.

        foreach( ListItem item in selCheckList.Items)
        {
            item.Attributes["data-role-id"] = item.Value;
        }

¿No es " Comprobado " lo mismo que " Value " ;?

http://www.w3schools.com/aspnet/control_checkbox.asp

Echa un vistazo allí. Realmente no necesita una propiedad específicamente llamada & Quot; Value & Quot ;, porque & Quot; Checked & Quot; le dará la misma información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top