UpdatePanel внутри повторителя - обновить все строки - PullRequest
1 голос
/ 15 апреля 2011

Я пытаюсь ускорить работу моего повторителя, чтобы при каждом вызове через AJAX UpdatePanel не нужно было пересылать больше HTML.

Итак, вот что у меня есть (очень упрощенная версия):

<asp:Repeater ID="rptContactSteps" runat="server">
    <ItemTemplate>

            <p>Script:<br /><%#mobjSDIT.FormatText(Eval("script"))%></p>
            <p>Notes:<br /><%#mobjSDIT.FormatText(Eval("notes"))%></p>

            <asp:UpdatePanel ID="upStep" runat="server" UpdateMode="Conditional">
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="rptContactSteps" EventName="ItemCommand" />
                </Triggers>
                <ContentTemplate>

                    <p>Contact/Step Notes:<br /><%#mobjSDIT.FormatText(Eval("contact_step_notes"))%></p>

                    <asp:ImageButton ID="btnSaveAndCompleteLastStep" runat="server" ImageUrl="~/images/content/buttons/save-and-complete-button.png" CommandArgument='<%#Eval("step_contact_tie_id")%>' />

                </ContentTemplate>
            </asp:UpdatePanel>

    </ItemTemplate>
</asp:Repeater>

Итак, когда я нажимаю «btnSaveAndCompleteLastStep», я хочу, чтобы все UpdatePanel в «rptContactSteps» обновлялись. Наличие UpdatePanel внутри ItemTemplate должно помочь избежать повторной загрузки html / text, который заполняет Eval («скрипт») и Eval («заметки»), поскольку значение этих переменных может быть очень большим и через соединение 3G это может быть очень дорого (по времени и деньгам).

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

Есть идеи у кого-нибудь?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2011

Они не обновляются, за исключением того, который вызывается, потому что режим обновления установлен на условный, а по умолчанию для ChildrenAsTriggers установлено значение true. Поэтому, если вы хотите, чтобы все они обновлялись при изменении одного из них, вам нужно будет найти каждую из панелей обновления в каждом из элементов ретранслятора и вызвать .Update () на панели обновления, или вы можете изменить режим обновления. на «Всегда», или просто оберните свой ретранслятор в панель обновлений вместо того, чтобы оборачивать только элементы.

Это имеет смысл? Если нет, я могу расширить.

0 голосов
/ 16 апреля 2011

Такое поведение звучит нормально для меня, потому что постбэк из панели обновлений по умолчанию ничего не обновляет за ее пределами.

Один из способов, которым вы можете попробовать, - это щелкнуть btnSaveAndCompleteLastStep, найти каждую панель обновления в элементах повторителя и вызвать Update () для нее.

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