2014-10-31 18 views
0

我有一個標籤,當我按下按鈕時應更新的側欄。下面是代碼:嘗試更新作爲計數器但沒有運氣的標籤

<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

有沒有其他地方'CurrentQ.Text'被分配一個值?你有沒有檢查過這些按鈕點擊事件後是否被調用? – rikitikitik 2014-10-31 03:15:17

+0

我經歷了整個項目,並確定沒有其他地方CurrentQ.Text被分配。還是行不通。 – Manolo 2014-10-31 03:19:28

回答

0

那是因爲Offset值不堅持,每次單擊該按鈕的計數器復位到其原始值。

在頁面的ViewState中定義Offset

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

您好Kennyzx我確實在ViewState中定義了它,而不是這樣做。 – Manolo 2014-10-31 02:17:11

+0

設置一個斷點到'CurrentQ.Text =(Offset + 1).ToString();'這行,它會被擊中嗎? – kennyzx 2014-10-31 02:25:14

+0

是的,它被擊中,並在CurrentQ.Text的值後面的代碼被設置爲適當的數字。 – Manolo 2014-10-31 02:55:04

0

嗨,我已經找到了問題。我已宣佈,將增加的徽章作爲

RegisterAsyncPostBackControl(DecrementButton); 

是這樣的話,我可以生成的主要內容頁面上的UpdatePanel的一個問題,因此我必須創建和更新面板環繞我的標籤,然後把該按鈕AsyncPostBack也會響應點擊DecrementButton和IncrementButton。

謝謝那些對我的問題感興趣的人,我通常不會打擾太多,但是這個讓我額外頭疼的事情就要放棄了,我通常不會這樣做,直到我解決問題。

相關問題