我试图使用组名找到已检查无线电的值我有返回它的方法,但我应该在该方法中传递什么以及组名
方法在这里,
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;
}
我喜欢
Oc.aProjectSubmited = getRadioValue(RadioButton,"Aps");
其中Aps是无线电组但在单选按钮上收到错误“无效参数”我通过了吗?
希望提前感谢您的建议答案 0 :(得分:4)
这是因为您正在传递RadioButton
。您的方法接受ControlCollection
,而不是Control
。
为什么不传递this.Controls传递页面的整个ControlCollection?或者你可能用来保存想要检查的RadioButton的任何其他ControlCollection?
以下是一个例子:
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;
}
答案 1 :(得分:3)
这是使用Linq避免循环的较短版本......
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"];
}
答案 2 :(得分:1)
使用LINQ:
container.Controls.OfType<RadioButton>().FirstOrDefault(r => r.GroupName == "GroupName" && r.Checked).Text;
答案 3 :(得分:0)
ToString()不会给你你想要的东西:你需要更像
的东西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;
}