尝试更新用作计数器的标签,但没有成功
本文关键字:成功 标签 更新 计数器 | 更新日期: 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的点击。
感谢那些对我的问题感兴趣的人,我通常不会太在意,但这一次让我特别头疼。我正要放弃它,除非我解决了问题,否则我通常不会这么做。