Ajax和简单按钮事件处理程序不工作
本文关键字:程序 工作 事件处理 按钮 简单 Ajax | 更新日期: 2023-09-27 18:14:57
我遇到了Ajax和c# asp.net的问题。我使用的是Microsoft Visual Studio 2010。
首先让我解释一下我的网页。
我有一个脚本管理器,在它的正下方我有一个更新面板。
这是我一直在摆弄的动态占位符。
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;
}
}
现在我的按钮所做的就是添加另一个文本框到动态控制面板。
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被保存到下一页,即使我们有他们创建在一个!页。IsPostBack
问题是我的按钮事件处理程序只工作一次。我很确定这是因为Ajax正在调用部分回发,它不识别它调用我的按钮事件处理程序。
我不确定,任何帮助都很感激。
Firebug在调试ajax方面有奇效。"有多个具有相同ID '5'的控件。"
多么简单的修复。将id++;
移动到Button1_Click
事件处理程序的顶部。
如果你曾经假设ajax破坏你的事件处理程序只是因为断点没有在事件处理程序中触发,firebug也可以拯救你!
事件处理程序绝对没有任何问题,但其中的代码导致错误,ajax不允许它中断。