Question

Je suis conscient que le contrôle .NET CheckBox par défaut ne prend pas en charge la propriété Value. Cela me semble étrange car le contrôle d’entrée prend en charge la valeur dans le cadre des spécifications html.

Ma question est donc de savoir si quelqu'un ici connaît un contrôle utilisateur personnalisé pour asp.net qui agit de manière similaire aux contrôles CheckBox et CheckBoxList standard d'ASP .NET?

Était-ce utile?

La solution 5

Il semble que les valeurs ne soient pas rendues dans le code HTML, mais restent stockées dans l'état d'affichage. J'ai donc pu extraire la valeur côté serveur lorsque j'ai accédé à l'objet ListItem dans CheckboxList.Items ()

Autres conseils

Je comprends peut-être mal votre question, mais savez-vous que vous pouvez également utiliser les contrôles HTML classiques?

Par exemple, créez une page ASPX et ajoutez la source suivante:

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

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

Ajoutez ensuite le code suivant dans votre code:

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

        }

Vous pouvez définir la propriété valeur de la case à cocher html comme bon vous semble.

Si vous ne devez y accéder que du côté serveur, vous pouvez facilement créer un contrôle serveur qui hérite du contrôle Checkbox et lui ajouter une propriété appelée valeur qui peut être définie et extraite du côté serveur.

Si vous devez y accéder depuis le côté client, vous devrez imaginer ce que le contrôle serveur restitue - probablement une combinaison d'une case à cocher et d'un champ caché dans lequel le champ caché contient la valeur.

Si vous ne faites qu'extraire la valeur des cases cochées côté serveur, j'imagine qu'une simple extension du contrôle de case à cocher suffirait cependant: ajoutez une propriété supplémentaire pouvant être définie et extraite du serveur. côté ... marche dans le parc.

Non, ils ne sont pas identiques

La fonctionnalité sur laquelle je travaille nécessite une liste de mises à niveau du produit sous forme de liste de CheckBox. Sur la base des cases à cocher & "Cochées &"; Je devrai les ajouter au produit. Les éléments de CheckBoxList sont dynamiques. Ainsi, lorsque je parcours les éléments cochés, j'ai besoin d'un identifiant unique. Le & Quot; Vérifié & Quot; la valeur est seulement un booléen

Ce que MS a fait ici, c’est la création de ses contrôles ASP avec une sensation .net. Toutefois, comme ils sont supposés fonctionner avec les navigateurs, ils rendent les contrôles HTML standard.

Ainsi, dans le code-behind cs / vb, vous voyez .Checked (bool), alors que dans le client / javascript, vous voyez .value.

Si ce que vous voulez est un identifiant unique, vous devez regarder ID ou ClientID. Vous pouvez également ajouter un attribut au checkboxt (.Attributes.Add ()) et l’utiliser.

Vous pouvez créer votre propre contrôle personnalisé en remplaçant CheckBox. Voici un exemple que je viens de créer pour ajouter une propriété Value côté serveur et côté client disponibles:

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

C'est une vieille question, mais les choses ont changé. Tout d'abord, dans asp.net 4.6, l'attribut value sera activé dans la case à cocher. Peu de ces réponses sont pertinentes pour CheckBoxList, qui utilise la classe ListItem pour générer des cases à cocher.

Ma solution pour les versions antérieures à la version 4.6 consiste à ajouter un attribut de données. Cela crée un <span> contrôle autour de la case à cocher et du libellé que vous pouvez trouver en javascript.

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

N'est-ce pas & "Coché &"; identique à " Valeur "?

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

Regardez là-bas. Vous n'avez pas vraiment besoin d'une propriété spécifiquement nommée & "Valeur &", Car & "Vérifié &"; vous donnera les mêmes informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top