我遇到了Ajax和C#asp.net的问题。我正在使用Microsoft Visual Studio 2010.Ajax和简单的按钮事件处理程序不工作
首先让我解释我的网页。
我有脚本管理器,直接在下面,我有一个更新面板。
这是我一直在摆弄的动态占位符。
http://www.denisbauer.com/ASPNETControls/DynamicControlsPlaceholder.aspx
在我的更新面板,我有一个动态的控制&按钮。
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:ScriptManager ID="ScriptManager1" runat="server" >
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<DBWC:DynamicControlsPlaceholder ID="DynamicControlsPlaceholder1"
runat="server">
</DBWC:DynamicControlsPlaceholder>
<br />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
</asp:Content>
现在,在我的身后代码:
我只是加5个文本框的动态控制。页面加载;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ViewState["id"] = 0;
int id = (int)ViewState["id"];
for (int i = 0; i < 5; i++)
{
id++;
TextBox txt = new TextBox();
txt.ID = id.ToString();
DynamicControlsPlaceholder1.Controls.Add(txt);
txt.Text = i.ToString();
}
ViewState["id"] = id;
}
}
现在我所有的按钮都是将另一个TextBox添加到动态控制面板。
protected void Button1_Click(object sender, EventArgs e)
{
int id = (int)ViewState["id"];
TextBox txt = new TextBox();
txt.ID = id.ToString();
DynamicControlsPlaceholder1.Controls.Add(txt);
// DynamicControlsPlaceholder1.DataBind();
txt.Text = id.ToString();
id++;
ViewState["id"] = id;
}
*注意我用的是自定义的动态控制面板,使他们的ID是保存到,即使我们有他们的!Page.IsPostBack creeated下一页
的问题是,我的按钮事件处理程序仅适用一次。我很确定它是因为Ajax调用了部分回发,并且它不会识别它来调用我的按钮事件处理程序。
我不确定,任何帮助appriciated。
请多关注您的标签选择,特别是当您选择“asp”标签时弹出的大“不使用”文本。 –
@Joel Coehoorn对不起。感谢您的编辑。我将来会更加小心。 – clamchoda
只是为了确保 - 你怎么知道按钮的点击只发射一次?你有没有在那里放置一个断点? – sq33G