转发器内的Updatepanel无法维持状态

时间:2013-11-23 08:23:40

标签: c# asp.net .net ajax updatepanel

我有一个由使用CollectionPager的转发器加载的用户控件。这个用户控件里面有一个UpdatePanel,如下所示:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div style="float:right; height:32px; width:32px"><asp:UpdateProgress ID="UpdateProgress2" runat="server" AssociatedUpdatePanelID="UpdatePanel1">
            <ProgressTemplate>
                <img alt="Working..." class="auto-style5" src="Images/ajaxloader.gif" width="32px" height="32px" />
            </ProgressTemplate>
        </asp:UpdateProgress></div>
            <br />
            <div style="font-family:Segoe UI Light, Tahoma, Geneva, Verdana, sans-serif">
                Upvoted By
                <asp:Label ID="lblUp" runat="server" Text=""></asp:Label>
                &nbsp;| Downvoted By
                <asp:Label ID="lblDown" runat="server" Text=""></asp:Label>
                <br />
            <asp:LinkButton ID="lnkUp" runat="server" ForeColor="#003300" OnClick="lnkUp_Click">Vote Up</asp:LinkButton>
            &nbsp;
            <asp:LinkButton ID="lnkDown" runat="server" ForeColor="Red">Vote Down</asp:LinkButton>
            &nbsp;
            <asp:LinkButton ID="lnkAddComment" runat="server" ForeColor="Maroon">Add Comment</asp:LinkButton>
            </div>
        </ContentTemplate>
    </asp:UpdatePanel>

LinkBut​​ton lnkUp将标签lblUp的值增加1,如下所示:

protected void lnkUp_Click(object sender, EventArgs e)
    {
        try
        {
            lblUp.Text = (int.Parse(lblUp.Text) + 1).ToString();
            lnkUp.Text = "Undo vote up";
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

问题在于,当我点击由转发器加载的一个用户控件lnkUp LinkBut​​ton时,它会递增相应lblUp标签的值。但是,当我点击另一个也由转发器加载的用户控件的lnkUp LinkBut​​ton时,它会成功递增其相应的lblUp标签,但会重置以前的用户控件{{s} { {1}}标签文字。简而言之,UpdatePanels在单击另一个用户控件时不会保持状态。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在updatepanal中

检查你的更新模式它应该是'always'。 或者做

protected void lnkUp_Click(object sender, EventArgs e)
    {
        try
        {
            lblUp.Text = (int.Parse(lblUp.Text) + 1).ToString();
            lnkUp.Text = "Undo vote up";
UpdatePanel1.update();
        }
        catch (Exception ex)
        {
            throw ex;
        }
}