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

时间:2013-08-12 15:08:48

标签: c# asp.net

我有一个单选按钮列表,我需要在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  错误

我做错了什么?

4 个答案:

答案 0 :(得分:21)

您不需要执行FindCOntrol。当您使用runat =“server”属性时,只需通过名称“radio1”获取RadioList的引用

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

答案 1 :(得分:3)

使用

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

您不是在页面上的控件上添加列表,而是在名为radioList的未实例化的Radiobutton列表中添加列表。

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

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

答案 2 :(得分:2)

你必须添加!ispostback

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

答案 3 :(得分:1)

作为使用&lt; asp: **&gt;工具 -
我需要重用一个依赖于网站中大量jQuery集成的无线电选项。 (还想避免只是将CSS隐藏在aspx页面的html代码中。)

所需的单选按钮仅出现在“编辑”页面中,具体取决于代码隐藏中的安全ACU级别逻辑,并使用在db中找到的当前存储的项目值数据进行渲染。 所以我使用了以下内容:

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());
}

它有效..这是一种错误的方式吗?