c# - vérifier - Comment rechercher un bouton radio coché à l'aide du nom de groupe Mon code?




vérifier si bouton radio coché javascript (3)

J'essaye de trouver la valeur de la radio vérifiée en utilisant le nom de groupe que j'ai la méthode qui le renvoie mais que dois-je passer dans cette méthode avec le nom de groupe

la méthode est ici,

private string getRadioValue(ControlCollection clts, string groupName)
{
    string ret = "";
    foreach (Control ctl in clts)
    {
        if (ctl.Controls.Count != 0)
        {
            if (ret == "")
                ret = getRadioValue(ctl.Controls, groupName);
        }

        if (ctl.ToString() == "System.Web.UI.WebControls.RadioButton")
        {
            RadioButton rb = (RadioButton)ctl;
            if (rb.GroupName == groupName && rb.Checked == true)
                ret = rb.Attributes["Value"];
        }
    }
    return ret;
}

je l'utilise comme

Oc.aProjectSubmited = getRadioValue(RadioButton,"Aps");

où Aps est le groupe de radio, mais obtenir l'erreur "argument invalide" sur le bouton radio que je passe ??

espère pour votre suggestion merci d'avance


C'est parce que vous passez RadioButton . Votre méthode accepte ControlCollection , pas un Control .

Pourquoi ne pas passer cela.Controls pour passer l'ensemble ControlCollection de la page? Ou tout autre ControlCollection que vous pourriez utiliser pour garder ce RadioButton que vous voulez vérifier?

Voici un exemple:

    protected void Page_Load(object sender, EventArgs e)
    {
        getRadioValue(this.Controls, "Hello");
    }

    private string getRadioValue(ControlCollection clts, string groupName)
    {
        string ret = "";
        foreach (Control ctl in clts)
        {
            if (ctl.Controls.Count != 0)
            {
                if (ret == "")
                    ret = getRadioValue(ctl.Controls, groupName);
            }

            if (ctl.ToString() == "System.Web.UI.WebControls.RadioButton")
            {
                RadioButton rb = (RadioButton)ctl;
                if (rb.GroupName == groupName && rb.Checked == true)
                    ret = rb.Attributes["Value"];
            }
        }
        return ret;
    }

Le ToString () ne va pas vous donner ce que vous voulez: vous avez besoin de quelque chose de plus

private string getRadioValue(ControlCollection clts, string groupName)
{
    var ret = "";
    foreach (Control ctl in clts)
    {
        if (ctl.Controls.Count != 0)
        {
            ret = getRadioValue(ctl.Controls, groupName);
        }
        if (!string.IsNullOrEmpty(ret)) {
          return ret;
        }
        var rb = ctl as RadioButton;
        if (rb != null && rb.GroupName == groupName && rb.Checked)
                return = rb.Attributes["Value"];
        }
    }
    return ret;
}

Utilisez LINQ:

container.Controls.OfType<RadioButton>().FirstOrDefault(r => r.GroupName == "GroupName" && r.Checked).Text;




web-controls