Question

Je dois lier datarows à mes contrôles. Jusqu'ici tout va bien. Le problème, c’est que mon champ de données ne contient que des chaînes dans la colonne que je dois lier, mais bien sûr, la propriété "cochée" d'une case à cocher ne prend que des arguments booléens.

Existe-t-il un moyen d'utiliser DataBinding ici? Peut-être avec une sorte de convertisseur entre les deux?

Merci

Était-ce utile?

La solution

Utilisez le ConvertEventHandler Delegate pour changer les types de liaison de données.

Exemple

    Binding binding = new Binding("checked", dt, "string_field");
    binding.Format += new ConvertEventHandler(binding_Format);
    binding.Parse += new ConvertEventHandler(binding_Parse);
    this.checkbox1.DataBindings.Add(binding); 

    void binding_Format(object sender, ConvertEventArgs e)
    {
        if (e.Value.ToString() == "yep") e.Value = true;
        else e.Value = false;
    }

    void binding_Parse(object sender, ConvertEventArgs e)
    {
        if ((bool)e.Value) e.Value = "yep";
        else e.Value = "nope";
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top