私はテーブルとボタンを持っています。ページが初めてロードされると、このメソッドが呼び出され、完全に機能します。「New Slot」ボタンを押してこのメソッドが呼び出されると、デバッグ中にこのテーブルの row.count が増加することを確認できますが、ブラウザーでは new がレンダリングされません (したがって、そうではありませんある行が別の行にポップする可能性があります)。UI で更新パネルを使用していますが、使用しても使用しなくても同じ効果があります。また、このメソッドで毎回テーブルを再追加しようとしましたが、1行だけが表示/レンダリングされますが、行に何かを入力してから別の行を追加すると、最初の行のものは失われ、行である可能性がありますが追加され、前のものは削除されますか? たぶん、ビューステートを使用する必要がありますか?誰かが私を正しい解決策に導くことができますか?
private void AddSlot()
{
DropDownList ddlProfiles = new DropDownList();
ddlProfiles.DataSource = DLProfiles.Instance.GetAllProfilesByGid(Int32.Parse(Session["gid"].ToString()));
ddlProfiles.DataTextField = "pName";
ddlProfiles.DataBind();
TableRow row = new TableRow();
TableCell cellProfile = new TableCell();
cellProfile.Controls.Add(ddlProfiles);
TableCell cellStart = new TableCell();
TextBox startTime = new TextBox();
cellStart.Controls.Add(startTime);
TableCell cellEnd = new TableCell();
TextBox endTime = new TextBox();
cellEnd.Controls.Add(endTime);
row.Cells.Add(cellProfile);
row.Cells.Add(cellStart);
row.Cells.Add(cellEnd);
scheduleTable.Rows.Add(row);
}
<asp:UpdatePanel ID="pnlSchedTable" runat="server">
<ContentTemplate>
<div id="divCurrentSchedule" runat="server">
<h3 id="scheduleTitle" runat="server">
</h3>
<asp:Table ID="scheduleTable" runat="server">
<asp:TableHeaderRow ID="rowHeaders" runat="server">
<asp:TableHeaderCell Text="Profile Name" />
<asp:TableHeaderCell Text="Start time" />
<asp:TableHeaderCell Text="End time" />
</asp:TableHeaderRow>
</asp:Table>
<asp:Button ID="btnNewSlot" runat="server" OnClick="btnNewSlot_Click" Text="New Slot" />
</div></ContentTemplate>
</asp:UpdatePanel>