gpt4 book ai didi

asp.net - 向 ASP.NET AJAX 中的 UpdatePanel 动态添加控件

转载 作者:行者123 更新时间:2023-12-03 23:21:23 25 4
gpt4 key购买 nike

我有以下非常简单的代码

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:PlaceHolder ID="PlaceHolder1" runat="server">
</asp:PlaceHolder>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>

和代码隐藏
protected void Button1_Click(object sender, EventArgs e)
{
Literal literal = new Literal();
literal.Text = DateTime.Now.ToString();
literal.ID = DateTime.Now.Ticks.ToString();

// These both work fine the first time the button is clicked
// but the second time nothing is added.
UpdatePanel1.ContentTemplateContainer.Controls.Add(literal);
PlaceHolder1.Controls.Add(literal);
}

我的问题是文字控件只添加一次。我已经搜索了谷歌和博客网站(以及书籍),但没有任何运气。我错过了什么?

最佳答案

在asp.net 中,ASPX 文件中的控件在每次回发时自动生成。您创建的控件不在 ASPX 代码中,因此框架不会为您创建它们。第一次执行 Button1_Click 方法时,向页面添加了一个额外的控件。第二次执行 Button1_Click 方法时,您在另一个回帖中,第一个额外的按钮已被遗忘。所以回发的结果是你又多了一个按钮。

这将在您每次单击按钮时创建一个额外的控件(尽管每次按下按钮时时间戳都会更新,因为正在重新创建控件)

protected void Button1_Click(object sender, EventArgs e)
{
int count = 0;

if (ViewState["ButtonCount"] != null)
{
count = (int)ViewState["ButtonCount"];
}

count++;
ViewState["ButtonCount"] = count;

for (int i = 0; i < count; i++)
{
Literal literal = new Literal();
literal.Text = DateTime.Now.ToString();
literal.ID = DateTime.Now.Ticks.ToString();

UpdatePanel1.ContentTemplateContainer.Controls.Add(literal);
PlaceHolder1.Controls.Add(literal);
}
}

关于asp.net - 向 ASP.NET AJAX 中的 UpdatePanel 动态添加控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/553073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com