2017-05-31 158 views
1

在我的aspx頁面有一個RadioButtonList,它包含名爲「添加」和「終止」的列表項。還有兩個gridview「GV_addition」和「GV_termination」。在選擇單選按鈕「添加」時,將顯示gridview「GV_addition」。當選擇「終止」項目時,將顯示網格視圖「GV_termination」。gridview和單選按鈕列表瀏覽器後退按鈕

在單選按鈕更改的事件上,它工作正常。但我的問題是,當我點擊瀏覽器後退按鈕,單選按鈕選擇和相應的網格視圖顯示不正確。我得到了問題,當選擇單選按鈕「添加」時顯示「Gv_termination」。只有當我點擊瀏覽器後退按鈕時,此問題纔會顯示。

請找我下面的代碼

<asp:RadioButtonList ID="RadioButtonList1" runat="server" 
     onselectedindexchanged="RadioButtonList1_SelectedIndexChanged" AutoPostBack="true"> 
    <asp:ListItem Text="addition" Value="addition"> </asp:ListItem> 
    <asp:ListItem Text="termination" Value="termination"></asp:ListItem> 

protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (RadioButtonList1.SelectedIndex == 0) 
     { 
      GV_addition.Visible = true; 
      GV_termination.Visible = false; 
     } 
     else 
     { 
      GV_termination.Visible = true; 
      GV_addition.Visible = false; 
     } 
    } 

我不明白,爲什麼,爲什麼單選按鈕選擇和相應的gridview的可視性不工作在瀏覽器備份按鈕事件。任何人都可以幫我解決這個問題嗎?

回答

1

請嘗試以下步驟。對我來說,同樣的情況起作用。

我可以看到值正在更新,但更新的無線電檢查狀態沒有更新到UI。所以我在一個body的Onload事件中使用了javacript。

在主體上添加Onload事件。

<body onload="setRadioButonStatus()"> 

並添加以下Javascript。

 function setRadioButonStatus() { 
      var rbtn1 = document.getElementById('RadioButton1'); 
      var rbtn2 = document.getElementById('RadioButton2'); 

      if (rbtn1.hasAttribute("checked")) 
       rbtn1.checked = true; 
      if (rbtn2.hasAttribute("checked")) 
       rbtn2.checked = true; 
     } 
+0

ASP服務器控件不保留相同的客戶端ID作爲他們的服務器ID,所以我不知道這會起作用。加載頁面時,RadioButton1的DOM ID不會是「RadioButton1」。 – Seano666

1

看起來像你沒有創建一個「默認」場景。您可以做到這一點,並通過在每個Page_Load上執行類似操作並將其從事件中排除,從而將邏輯更緊密地結合在一起。

protected void Page_Load(object sender, EventArgs e) 
    { 
     GV_addition.Visible = RadioButtonList1.SelectedIndex == 0; 
     GV_termination.Visible = RadioButtonList1.SelectedIndex == 1; 
    } 



protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    }