试图更新作为计数器但没有运气的标签

时间:2014-10-31 01:54:28

标签: c# asp.net

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

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

}

2 个答案:

答案 0 :(得分:0)

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

在页面的ViewState中定义Offset

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

答案 1 :(得分:0)

嗨,我已经找到了问题所在。我已经宣布了将徽章增加为

的按钮
RegisterAsyncPostBackControl(DecrementButton);

这样我就可以在主内容页面的updatepanel中生成一个问题,因此我必须创建并更新面板环绕我的标签,然后为AsyncPostBack添加一个响应点击DecrementButton和IncrementButton。

感谢那些对我的问题感兴趣的人,我通常不会打扰太多,但这个让我更加头疼的是要放弃它,在解决问题之前我一般都不会这样做。

相关问题