【问题标题】:Updatepanel inside repeater is unable to maintain state中继器内的更新面板无法保持状态
【发布时间】:2013-11-23 08:23:40
【问题描述】:

我有一个由使用 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 时,它会增加相应的lblUpLabel 的值。但是当我单击另一个用户控件的lnkUp LinkBut​​ton 也由转发器加载时,它成功地增加了其相应的lblUp 标签文本,但重置了前用户控件的lblUp 标签文本。简而言之,当单击另一个用户控件时,UpdatePanel 不会保持状态。我该如何解决?

【问题讨论】:

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


    【解决方案1】:

    在 updatepanal 中检查您的更新模式,它应该是“始终”。 或者做

    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;
            }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-05-18
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多