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正在调用部分回发,它不识别它调用我的按钮事件处理程序。

我不确定,任何帮助都很感激。

Ajax和简单按钮事件处理程序不工作

Firebug在调试ajax方面有奇效。"有多个具有相同ID '5'的控件。"

多么简单的修复。将id++;移动到Button1_Click事件处理程序的顶部。

如果你曾经假设ajax破坏你的事件处理程序只是因为断点没有在事件处理程序中触发,firebug也可以拯救你!

事件处理程序绝对没有任何问题,但其中的代码导致错误,ajax不允许它中断。

相关文章: