尝试更新用作计数器的标签,但没有成功

本文关键字:成功 标签 更新 计数器 | 更新日期: 2023-09-27 18:28:35

我有一个带有标签的侧栏,当我按下按钮时,标签应该会更新。这是代码:

<ul class="nav nav-sidebar">
  <li class="active" runat="server"><a href="#">
    <asp:Label ID="labelNavigate" Text=" Navigate" runat="server"/> 
    <asp:Label CssClass="badge" ID="CurrentQ" runat="server" EnableViewState="true"/>
  </a></li>
  <li><a href="#">
    <asp:Button ID="IncrementButton" BackColor="Transparent" OnClick="MasterButton_Click"  runat="server" Text="Next Question" BorderStyle="None"/>
  </a></li>
  <li><a href="#">
    <asp:Button ID="DecrementButton" BackColor="Transparent" OnClick="MasterButton_Click"  runat="server" Text="Previous Question" BorderStyle="None"/>
  </a></li>
  <li><a href="#">
    <asp:Button ID="Hint" BackColor="Transparent" OnClick="Hint_Click"  runat="server" Text="Help Me!" BorderStyle="None"/>
  </a></li>
  <li><a href="#"></a></li>
</ul>

我按下ID=IncrementButton的按钮,但ID=CurrentQ的标签从未更新。我在调试时检查了后面的代码,它表明CurrentQ.Text是我想要的正确数字,但无论我按下多少次,结果都保持为0,这是问题的原始数字。有人能告诉我我在这里做错了什么吗?我到处都看了,似乎无法打破这个。提前谢谢你,我很感激。

这是背后的代码:

protected void MasterButton_Click(object sender, EventArgs e)
{
    Button bt = (Button)sender;
    if (QNo.Text == "")
        return;
    if (bt.ID == "IncrementButton")
    {
        if (this.Offset == (Convert.ToInt32(QNo.Text))-1)
            return;
    }
    else if (bt.ID == "DecrementButton")
    {
        if (this.Offset == 0)
            return;
    }
    switch (bt.ID)
    {
        case "IncrementButton":
            this.Offset = this.Offset + 1;
            break;
        case "DecrementButton":
            this.Offset = this.Offset - 1;
            break;
    }
    //event for the content page to use to update it's content
    CurrentQ.Text = (Offset + 1).ToString();
    ChangeQuestion(this,EventArgs.Empty);
}

尝试更新用作计数器的标签,但没有成功

这是因为Offset的值不持久,每次单击按钮时,计数器都会重置为其原始值。

在页面的ViewState中定义Offset

public int Offset
{
    get
    {
        return (int)(ViewState["Offset"] ?? 0);
    }
    set
    {
        ViewState["Offset"] = value;
    }
}

嗨,我已经解决了这个问题。我已经宣布了将徽章增加为的按钮

RegisterAsyncPostBackControl(DecrementButton);

这样我就可以在主内容页面的更新面板中生成一个问题,因此我必须在标签周围创建和更新面板,然后为AsyncPostBack设置一个,该面板将响应DecrementButton和IncrementButton的点击。

感谢那些对我的问题感兴趣的人,我通常不会太在意,但这一次让我特别头疼。我正要放弃它,除非我解决了问题,否则我通常不会这么做。