在ASP.NET中以编程方式添加单选按钮列表项

10

我有一个单选按钮列表,我需要在Page_Load中添加其项。

aspx代码:

<asp:radioButtonList ID="radio1" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal">
</asp:radioButtonList>
代码后台
protected void Page_Load(object sender, EventArgs e)
{
    RadioButtonList radioList = (RadioButtonList)Page.FindControl("radio1");
    radioList.Items.Add(new ListItem("Apple", "1"));
}

当控件到达 radioList.Items.Add 时,我一直收到Object reference not set to instance of an object的错误提示。

我做错了什么?


2
radio1 是否在另一个 ASP.NET 控件内,例如 Repeater 或类似的控件中? - Claudio Redi
3
您可以通过代码后台访问radioButtonList,只需调用ID radio1.Items.Add(new ListItem("Apple", "1"))即可。 - Fals
如果它们在同一页上,为什么不直接写radio1.Items.Add呢?如果不是,请编辑您的问题。 - Kuzgun
@Claudio Redi:它嵌入在一系列<div>元素中。 - user544079
是的,我现在可以使用radio1.Items.Add访问它。 - user544079
4个回答

21

您不需要进行FindControl操作。由于您使用了runat="server"属性,只需通过名称"radio1"获取您的RadioList的引用即可。

protected void Page_Load(object sender, EventArgs e)
{
    radio1.Items.Add(new ListItem("Apple", "1"));
}

3

通过使用

RadioButtonList radioList = (RadioButtonList)Page.FindControl("radio1");
radioList.Items.Add(new ListItem("Apple", "1"));

您没有将列表添加到页面上的控件上,而是添加到一个未实例化的名为radioList的Radiobuttonlist上。

如果该页面可以从类中访问,请使用

radio1.Items.Add(new ListItem("Apple", "1"));

2

您必须添加!IsPostBack

if (!IsPostBack)
    {
        radio1.Items.Add(new ListItem("Apple", "1"));
    }

这部分代码:RadioButtonList radioList = (RadioButtonList)Page.FindControl("radio1"); 仍然无法正常工作。 - Guigui
使用MultiView时,防止项目被多次添加非常重要。谢谢! - kolboc

1
作为不使用<asp:**>工具的替代方案 - 我需要重复使用一个依赖于网站中大量jQuery集成的单选按钮。(还想避免在aspx页面的html代码中仅使用CSS隐藏内容。)
单选按钮只需根据代码后台中的安全ACU级别逻辑出现在“编辑”页面中,并以当前存储的项目值数据从数据库中呈现。 因此,我使用了以下方法:
string RadioOnChk1  = (db.fieldChecked == true) ? "checked='checked'" : "";
string RadioOnChk2  = (db.fieldChecked == false) ? "checked='checked'" : "";

if (ACU > 3)
{
// Create radio buttons with pre-checked
  StringBuilder RadioButtns = new StringBuilder(); // Form input values
  {
   RadioButtns.Append("<p><label><input type=\"radio\" id=\"radiocomm1\" name=\"custmComm\" value=\"1\"");
   RadioButtns.Append(RateIncChk1 + "/>Included or </label>");
   RadioButtns.Append("<label><input type=\"radio\" id=\"radiocomm2\" name=\"custmComm\" value=\"2\"");
   RadioButtns.Append(RateIncChk2 + "/>Excluded</label>");
   RadioButtns.Append("</p>");
  }
  htmlVariable = (RadioButtns.ToString());
}

它可以工作...这样做有问题吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接