Ajax и простые кнопки обработчики событий не работают - PullRequest
3 голосов
/ 16 ноября 2011

У меня проблема с 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;
        }

    }

Теперь все, что делает моя кнопка, это добавляет еще один 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;

    }

* Примечание.панель управления, поэтому их идентификаторы сохраняются на следующей странице, даже если они были записаны в! Page.IsPostBack

Проблема в том, что мой обработчик событий кнопки работает только один раз.Я уверен, что это потому, что Ajax вызывает частичный постбэк, и он не распознает его, чтобы вызвать мой обработчик событий кнопки.

Я не уверен, что любая помощь оценена.

1 Ответ

1 голос
/ 17 ноября 2011

Firebug творит чудеса для отладки AJAX. «Было несколько элементов управления с одинаковым идентификатором« 5 ».»

Какое простое исправление. Перемещено id++; в начало обработчика событий Button1_Click.

Если вы когда-либо предполагаете, что ajax нарушает ваш обработчик событий только потому, что точка прерывания не запускается в обработчике событий, firebug может вас спасти!

В обработчике событий не было абсолютно ничего плохого, но код внутри него вызывал ошибку, и ajax не давал ему сломаться.

...