浏览器后退按钮上的gridview和单选按钮列表

时间:2017-05-31 15:51:40

标签: c# asp.net

在我的aspx页面上有一个RadioButtonList,它包含名为“additions”和“termination”的列表项。还有两个gridview“GV_addition”和“GV_termination”。在选择单选按钮“添加”时,将显示gridview“GV_addition”。选择项目“终止”时,将显示gridview“GV_termination”。

在单选按钮更改事件上,它正常工作。但我的问题是,当我单击浏览器后退按钮时,单选按钮选择和相应的网格视图无法正确显示。我遇到了问题,选择单选按钮“添加”时会显示“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 visiblity不能用于浏览器后退按钮事件。任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分: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)
    {

    }

答案 1 :(得分:1)

请尝试以下步骤。对我来说,同样的情况也有效。

我可以看到值正在正确更新,但更新的无线电检查状态未更新到UI。所以我使用javacript在一个正文的Onload事件上设置它。

在正文上添加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;
        }