C# 动态添加行asp.net(单击按钮)-使用动态HTML-未显示行

C# 动态添加行asp.net(单击按钮)-使用动态HTML-未显示行,c#,asp.net,html,C#,Asp.net,Html,我有一张桌子和一个钮扣。第一次加载页面时,会调用此方法,它工作得非常好。当我按下“New Slot”(新建插槽)按钮并调用此方法时,我可以在调试期间看到此表的row.count增加,但在浏览器中,不会呈现新的行(因此不会出现一行突然出现在另一行上的情况)。我在我的UI中使用了一个更新面板,但是无论有没有它,我都有相同的效果。我也尝试过在这个方法中每次重新添加表,但是只显示/呈现一行,但是如果我在行中键入一些内容,然后添加另一行,第一行中的内容就会丢失,可能是添加了行,删除了前一行?也许我必须使用

我有一张桌子和一个钮扣。第一次加载页面时,会调用此方法,它工作得非常好。当我按下“New Slot”(新建插槽)按钮并调用此方法时,我可以在调试期间看到此表的row.count增加,但在浏览器中,不会呈现新的行(因此不会出现一行突然出现在另一行上的情况)。我在我的UI中使用了一个更新面板,但是无论有没有它,我都有相同的效果。我也尝试过在这个方法中每次重新添加表,但是只显示/呈现一行,但是如果我在行中键入一些内容,然后添加另一行,第一行中的内容就会丢失,可能是添加了行,删除了前一行?也许我必须使用viewstate?有人能告诉我正确的解决方法吗

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>
private void AddSlot()
{
DropDownList ddlProfiles=新的DropDownList();
ddlProfiles.DataSource=DLProfiles.Instance.GetAllProfilesByGid(Int32.Parse(Session[“gid”].ToString());
ddlProfiles.DataTextField=“pName”;
ddlProfiles.DataBind();
TableRow行=新TableRow();
TableCell cellProfile=新的TableCell();
cellProfile.Controls.Add(ddlProfiles);
TableCell cellStart=新的TableCell();
TextBox startTime=new TextBox();
cellStart.Controls.Add(startTime);
TableCell cellEnd=新的TableCell();
TextBox endTime=新建TextBox();
cellEnd.Controls.Add(endTime);
row.Cells.Add(cellProfile);
row.Cells.Add(cellStart);
row.Cells.Add(cellEnd);
scheduleTable.Rows.Add(row);
}

您什么时候拨打AddSlot?
如果您希望它在任何页面请求后运行,无论是初始加载还是单击按钮,您都应该将其移动到“预呈现”…然后您的计时问题将得到调整。

您何时调用AddSlot? 如果您希望它在任何页面请求后运行,无论是初始加载还是单击按钮,您都应该将其移动到“预呈现”…然后您的计时问题将得到调整