我有一个单选按钮列表,我需要在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
错误
我做错了什么?
答案 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());
}
它有效..这是一种错误的方式吗?