buttons - radiobuttonlist asp net c# ejemplos
Cómo encontrar el botón de radio verificado usando el nombre de grupo Mi código ¿Adjunto? (4)
El ToString () no te dará lo que quieres: necesitas algo más como
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;
}
Estoy tratando de encontrar el valor de la radio marcada usando el nombre del grupo. Tengo el método que lo devuelve, pero ¿qué debo pasar en ese método junto con el nombre del grupo?
el método está aquí,
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;
}
Lo uso como
Oc.aProjectSubmited = getRadioValue(RadioButton,"Aps");
donde Aps es un grupo de radio pero obtengo el error "argumento inválido" en el botón de radio que paso ??
espera su sugerencia gracias de antemano
Esto es porque estás pasando RadioButton
. Su método acepta ControlCollection
, no un Control
.
¿Por qué no pasar esto? ¿Controles para pasar toda la colección de control de la página? ¿O cualquier otra colección de control que pueda estar utilizando para mantener ese RadioButton que desea verificar?
Aquí hay un ejemplo:
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;
}
Aquí hay una versión más corta usando Linq para evitar los bucles ...
public static string GetRadioValue(ControlCollection controls, string groupName)
{
var selectedRadioButton = controls.OfType<RadioButton>().FirstOrDefault(rb => rb.GroupName == groupName && rb.Checked);
return selectedRadioButton == null ? string.Empty : selectedRadioButton.Attributes["Value"];
}
Use LINQ:
container.Controls.OfType<RadioButton>().FirstOrDefault(r => r.GroupName == "GroupName" && r.Checked).Text;