データベースの行数に基づいて、データで満たされた多数のチェックボックスリストを動的に作成する Web フォームがあります。次に、これがプレースホルダーに追加されて表示されます。
クリックするとボタンがあり、選択したチェックボックスの値がデータベースに追加されますが、現在ボタンをクリックするとポストバック後に、ページに「System.NullReferenceException」というエラーが表示されます。
次のコードは、(!Page.IsNotPostBack) 内の Page_Load と、多数のチェックボックス リストを動的に作成するループ内に記述されています。
CheckBoxLis chkContent = new CheckBoxList();
chkContent.ID = chkIDString; //chkIDString is an incremental int based on the row count
chkContent.RepeatDirection = RepeatDirection.Horizontal;
foreach (List<t> contentList in List<t>) //data retrieved as List<t> using LINQ
{
ListItem contents = new ListItem();
contents.Text = contentList.Title;
contents.Value = contentList.contentID.ToString();
chkContent.Items.Add(contents);
}
plcSchool.Controls.Add(chkContent); //plcSchool is my placeholder
plcSchool.Controls.Add(new LiteralControl("<br>"));
protected void btnAdd_Click(object sender, EventArgs e)
{
CheckBoxList cbl = Page.FindControl("chkContent4") as CheckBoxList;
Response.Write(cbl.SelectedValue.ToString()); // now im just testing to get the value from one of the checkboxlist
}
ポストバック後にコントロールが再作成されないように見えるため、誰でも助けることができるため、コントロールが見つからず、null 参照例外がスローされます。