我有一个带有标签的侧栏,按下按钮时应该更新。这是代码:
<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);
}
答案 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。
感谢那些对我的问题感兴趣的人,我通常不会打扰太多,但这个让我更加头疼的是要放弃它,在解决问题之前我一般都不会这样做。