Repeater中的UpdatePanel - 更新所有行

时间:2011-04-15 13:48:42

标签: asp.net ajax vb.net updatepanel repeater

我正在尝试加速我的Repeater,以便在每次调用时不必通过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'时,我希望'rptContactSteps'中的所有UpdatePanel都能更新。在ItemTemplate中使用UpdatePanel应该有助于防止必须重新加载填充Eval(“脚本”)&amp;的html /文本。 Eval(“注释”),因为这些变量的价值可能非常大,而且在3G连接上这可能非常昂贵(时间和金钱)。

我虽然通过添加异步触发器它可以工作,因为我之前使用过这种类型的触发器,但不是在Repeater内部。目前UpdatePanels根本没有得到更新,除了按下按钮的那个。

任何想法?

2 个答案:

答案 0 :(得分:0)

这种行为听起来不错,因为默认情况下,更新面板内的回发不会更新任何内容。

您可以尝试的一种方法是在btnSaveAndCompleteLastStep点击,找到转发器项目中的每个更新面板,并在其上调用Update()。

答案 1 :(得分:0)

它们不会被更新,除非被调用的更新,因为更新模式设置为条件,默认情况下,ChildrenAsTriggers设置为true。因此,如果您希望在更改其中一个更新时全部更新,则需要在每个转发器项中找到每个更新面板并在更新面板上调用.Update(),或者您可以更改更新模式“始终”,或者只是将转发器包装在更新面板中,而不是只包装项目。

这有意义吗?如果没有,我可以扩展。