Обновление панели обновляет один раз и приводит к повторной публикации на других триггерах - PullRequest
0 голосов
/ 25 июня 2019

Я динамически создаю кнопки Image и помещаю их в заполнитель ASP.Когда пользователь нажимает на изображение (кнопку), оно должно обновить панель с информацией о школе.Панель обновляется правильно при первом нажатии кнопки, но когда я нажимаю другую кнопку, она вызывает сообщение назадВ этот второй, третий и т. Д. Следует обновить панель без обратной записи.

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

Создание кнопок и триггеров

 int counter = 0;
        foreach (DataRow row in tempTable.Rows)
        {

            var button = new ImageButton
            {
                ID = counter.ToString(),
                CausesValidation = false
                //OnClientClick= "return false;"


            };
            button.Command += new CommandEventHandler(buildSchoolInfo); //The onclick event that builds the school info
            button.CommandName = "ImageButton" + counter.ToString();
            button.CommandArgument = "Test" + counter.ToString();
            SchoolListPH.Controls.Add(button); //Add image button to placeholder

            AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
            trigger.ControlID = button.ID;
            //trigger.EventName = "Click";
            schoolInfoUP.Triggers.Add(trigger); //Adding the trigger to the Update Panel

            counter++;

        }

Код ASPX

 <div style="border: 1px solid black">
    <asp:PlaceHolder ID="SchoolListPH" runat="server"></asp:PlaceHolder>
</div>

<%--    This is the literal that builds with all of the selected schools information --%>
<asp:UpdatePanel ID="schoolInfoUP" runat="server" >

    <ContentTemplate>
        <asp:Literal ID="litTable" runat="server"></asp:Literal>

    </ContentTemplate>


</asp:UpdatePanel>

1 Ответ

0 голосов
/ 25 июня 2019

После поиска в интернете путей к длинному, эта единственная строка исправила это для меня.

   ScriptManager.GetCurrent(Page).RegisterAsyncPostBackControl(button);

Я разместил его сразу после добавления триггера на панель обновлений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...