UpdatePanel不能与脚本管理器一起使用。以下代码发生了回发。我该如何做Ajax行为?

时间:2012-07-23 09:15:27

标签: asp.net

<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

<asp:UpdatePanel ID="UpdatePanel" runat="server">
        <ContentTemplate>
            <asp:Repeater ID="rpChat" runat="server" OnItemDataBound="rpChat_ItemDataBound" OnItemCommand="rpChat_ItemCommand">
                <ItemTemplate>
                    <div id="divChatWindow" title='<%# Eval("username") %>' runat="server" class="clChatWindow">
                        <div>
                            <asp:Label runat="server" Text='<%# Eval("username") %>' class="divHeader"></asp:Label>
                            <img src="../../Menu/close.jpg" onclick="HideDiv(this)" style="float: right; width: 20px;
                                height: 20px;" /></div>
                        <div class="chatText">
                            <asp:Repeater ID="rpChatMessages" runat="server">
                                <ItemTemplate>
                                    <asp:Image ID="imageForFriend" runat="server" CssClass="clFriendsImage" ImageUrl='<%# "HttpImageHandler.jpg?username=" +  DataBinder.Eval(Container.DataItem,"fromusername").ToString() %>' />
                                    <asp:Label ID="chatMessage" runat="server" Text='<%# Eval("Message") %>'></asp:Label>
                                    <br>
                                </ItemTemplate>
                            </asp:Repeater>
                        </div>
                        <asp:TextBox ID="txtChatMessage" runat="server" Width="115px"></asp:TextBox>
                        <asp:LinkButton ID="btnSendChat" runat="server" CommandName="Insert" CommandArgument='<%# Eval("username") %>'>Send</asp:LinkButton>
                    </div>
                </ItemTemplate>
            </asp:Repeater>
        </ContentTemplate>
    </asp:UpdatePanel>

我编辑了代码......现在该怎么办?我在contenttemplate中有linkbutton。仍然有回发正在发生

1 个答案:

答案 0 :(得分:1)

来自UpdatePanel之外的任何控件的任何回发都会触发完整的回发,除非您将这些事件添加为UpdatePanel的触发器

在您的示例中,

<asp:LinkButton ID="btnSendChat" runat="server" CommandName="Insert" CommandArgument='<%# Eval("Username2") %>'>Send</asp:LinkButton>

它位于UpdatePanel之外,因为您的面板中没有触发器会始终导致完整的回发

解决方案:

方法1

LinkButton放在UpdatePanel.ContentTemplate

方法2

UpdatePanel

添加触发器
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="btnSendChat" EventName="Click" />
</Triggers>