我有桌子和一个按钮。第一次加载页面时,会调用此方法并且它运行良好。当我按下“New Slot”按钮并调用此方法时,我可以在调试过程中看到该表的 row.count 增加,但在浏览器中,不会呈现新的(因此并非如此也许一排突然出现在另一排上)。我在我的 UI 中使用更新面板,但无论有没有它,我都有相同的效果。我也尝试在这种方法中每次都重新添加表,但是只有 1 行是 SHOWN/RENDERED,但是如果我在该行中键入一些内容,然后再添加一个,则第一行中的内容丢失了,可能是该行正在添加而前一个被删除?也许我必须使用视图状态?有人可以指导我找到正确的解决方案吗?
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>