コード ビハインドから作成されたテーブルのセル内のテキスト ボックスの内容にアクセスできません。私の小さなプログラムでは、テーブルには学生の名前 (セル A1) が事前に入力されています。その下のセル (セル A2) にテキスト ボックスが追加されます。ユーザーはテキスト ボックスに合格または不合格を入力し、[送信] をクリックします。その時点で、「学生のステータスが (ユーザーが入力したものは何でも) に変更されました」というメッセージが表示されます。これが問題です。テキスト ボックス ID (student1) がコード ビハインドで割り当てられているため、テキスト ボックス ID はコンテキスト内にまだ存在しません。
//Code Behind
protected void Page_Load(object sender, EventArgs e)
{
Label nameStudent = new Label()
{
Text = "Annie McDonald"
};
TableCell nameCell = new TableCell();
nameCell.Controls.Add(nameStudent);
NameRow.Cells.Add(nameCell);
TextBox status = new TextBox()
{
ID = "student1",
Text = "Pass or Fail"
};
TableCell statusCell = new TableCell();
statusCell.Controls.Add(status);
StatusRow.Cells.Add(statusCell);
}
protected void sumbitChange_Click(object sender, EventArgs e)
{
Confirm.InnerText = "The students status was changed to " + student1.Text;
}
<body>
<form id="form1" runat="server">
<asp:Table ID="StudentRoster" runat="server">
<asp:TableRow ID="NameRow" runat="server" />
<asp:TableRow ID="StatusRow" runat="server" />
</asp:Table>
<asp:Button ID="sumbitChange" text="Submit" runat="server" OnClick="sumbitChange_Click"/>
<p id="Confirm" runat="server"></p>
</form>
</body>