对象引用未设置为对象的实例。
protected void cmdSave_Click(object sender, EventArgs e)
{
string strNames = string.Empty;
CheckBoxList Chkboxx = (CheckBoxList)PlaceHolder1.FindControl("Chkbox");
foreach (ListItem em in Chkboxx.Items) //-------- (Showing error)
{
if (em.Selected)
{
strNames += em.Value + ", ";
}
}
string final_name = strNames.Substring(0, strNames.Length - 2);
lblNames.Text = final_name;
}
实际上我是动态添加Checkbox控件:
protected void ddl_varient_SelectedIndexChanged1(object sender, EventArgs e)
{
string query = "select prd_vrtyvalue_id,varient_value from tbl_ProductVariety_Value where varient='" + ddl_varient.SelectedItem.Text + "' " +
" order by varient_value asc ";
DataTable abc = new DataTable();
SqlDataAdapter ada = new SqlDataAdapter(query, new CommonClass().connection());
ada.Fill(abc);
ChkboxList.ID = "Chkbox";
for (int i = 0; i < abc.Rows.Count; i++)
{
ChkboxList.Items.Add(new ListItem(abc.Rows[i]["varient_value"].ToString(), abc.Rows[i]["prd_vrtyvalue_id"].ToString()));
}
ChkboxList.RepeatColumns = 2;
PlaceHolder1.Controls.Add(ChkboxList);
}
任何人都可以告诉我,我到底做错了什么!
答案 0 :(得分:2)
ASP.NET WebForms的工作方式是在每个回发期间重新构建整个页面。所以,我想这就是现在发生的事情:
要修复,您可以在Page_Load上重新添加ChkboxList,具体取决于DDL_VARIENT复选框的值。如果我是你,我很想在你的ASPX / ASCX代码中定义ChkboxList,然后根据Page_Load中DDL_VARIENT复选框的值设置列表的可见性。
我应该补充一点,以上所有内容都取决于您使用ASP.NET WebForms。如果你正在使用MVC那么它可能是错误的。