C# 刷新视图内容

C# 刷新视图内容,c#,asp.net,C#,Asp.net,我使用多视图显示一些图表。第一次加载时,页面显示2个下拉列表和一个GO按钮。我使用代码隐藏根据下拉列表中的选择来选择要显示的视图 页面上有一个AJAX刷新按钮,允许用户停止自动刷新。该按钮禁用计时器、更改按钮文本、斜体化并禁用按钮本身。这很有效 用户选择他们的选项并点击GO,然后显示请求的视图。我不允许使用打开自动刷新的方法。纯粹是为了我自己。我认为最简单的方法是允许用户再次点击GO按钮(控制当前视图的选项仍在下拉列表中选择),这将在默认情况下启用自动刷新来重新加载视图 下面是我目前拥有的基本代

我使用多视图显示一些图表。第一次加载时,页面显示2个下拉列表和一个GO按钮。我使用代码隐藏根据下拉列表中的选择来选择要显示的视图

页面上有一个AJAX刷新按钮,允许用户停止自动刷新。该按钮禁用计时器、更改按钮文本、斜体化并禁用按钮本身。这很有效

用户选择他们的选项并点击GO,然后显示请求的视图。我不允许使用打开自动刷新的方法。纯粹是为了我自己。我认为最简单的方法是允许用户再次点击GO按钮(控制当前视图的选项仍在下拉列表中选择),这将在默认情况下启用自动刷新来重新加载视图

下面是我目前拥有的基本代码,只需演示一个视图

ASP.NET

<asp:Content ID="HeadContent" runat="server" ContentPlaceHolderID="HeadContent">
    <script type="text/javascript">
        function SetText(id) {
            if (id.value == "Disable automatic page refresh")
                id.value = "Processing Request ...";
        }
    </script>
</asp:Content>

<asp:DropDownList ID="itemDropdown" runat="server">
            ASP LIST ITEMS
</asp:DropDownList>
<asp:DropDownList ID="timeDropdown" runat="server">
            ASP LIST ITEMS
</asp:DropDownList>
<asp:Button ID="Button1" runat="server" Text="Go" OnClick="Button1_Click" />
</p>
<p>
    <asp:Label ID="errorLabel" runat="server" CssClass="errorLabel"></asp:Label>
</p>

<asp:MultiView ID="MultiView1" runat="server">
    <asp:View ID="View1" runat="server">
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" ViewStateMode="Enabled" UpdateMode="Conditional">
            <ContentTemplate>
                <asp:Button ID="Button2" runat="server" Text="Disable automatic page refresh" OnClick="Button2_Click" OnClientClick="return SetText(this)" /></p>
        CONTENT HERE
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
            </Triggers>
        </asp:UpdatePanel>
        <asp:Timer ID="Timer1" runat="server" Interval="60000">
        </asp:Timer>
    </asp:View>
我的问题是,当我单击GO按钮时,更新的按钮条件仍然存在。即,名称已更改、斜体和禁用。有没有办法强制视图完全重新加载?我希望这是有道理的。我尝试了UpdatePanel1.Update();正如上面的Button1_Click方法所示,但它不起作用

根据Ann L的建议,我尝试了以下方法,但均无效:

protected void Button2_Click(object sender, EventArgs e)
{
    Timer1.Enabled = false;
    Button2.Text = "Automatic Refresh Disabled";
    Button2.Font.Italic = true;
    Button2.Enabled = false;

    Timer1.Enabled = true;
    Timer1.Interval = 10000;
    Button2.Text = "Disable automatic page refresh";
    Button2.Font.Italic = false;
    Button2.Enabled = true;
}

protected void Button2_Click(object sender, EventArgs e)
{
    Timer1.Enabled = true;
    Timer1.Interval = 10000;
    Button2.Text = "Disable automatic page refresh";
    Button2.Font.Italic = false;
    Button2.Enabled = true;     

    Timer1.Enabled = false;
    Button2.Text = "Automatic Refresh Disabled";
    Button2.Font.Italic = true;
    Button2.Enabled = false;
}

protected void Button2_Click(object sender, EventArgs e)
{
    if (!Button2.Enabled)
    {
        Timer1.Enabled = true;
        Timer1.Interval = 10000;
        Button2.Text = "Disable automatic page refresh";
        Button2.Font.Italic = false;
        Button2.Enabled = true;
    }
    else
    {
        Timer1.Enabled = false;
        Button2.Text = "Automatic Refresh Disabled";
        Button2.Font.Italic = true;
        Button2.Enabled = false;
        Button2.ToolTip = "Click again to resume automatic refresh";
    }
}
为了解决这个问题,我在代码中添加了以下内容:

protected void Button2_Click(object sender, EventArgs e)
{
    if (Button2.Text == "Disable automatic page refresh")
    {
        Timer1.Enabled = false;
        Button2.Text = "Automatic Refresh Disabled";
        Button2.Font.Italic = true;
        Button2.ToolTip = "Click again to resume automatic refresh";
    }
    else
    {
        Timer1.Enabled = true;
        Timer1.Interval = 10000;
        Button2.Text = "Disable automatic page refresh";
        Button2.Font.Italic = false;
        Button2.ToolTip = "Click to disable automatic page refresh";
    }
}

好的,假设我理解您的问题(如何撤消对
按钮2
所做的更改),下面是我将如何做的:

以下代码将进入
按钮1\u单击

if(!Button2.Enabled)
{
    Timer1.Enabled = true;  // You might also have to reset its properties
    Button2.Text = "Disable automatic refresh";
    Button2.Font.Italic = false;
    Button2.Enabled = true;
}
如果未更改任何控件的状态,则更新更新面板将无效。它不像刷新iframe或整个页面:它只是重新呈现页面,使更改可见。它不会重置任何内容的值或属性


我不是
UpdatePanel
专家,但我认为将此代码添加到
Button1\u点击
(这是一个完整的回发,是吗?)

也许我遗漏了什么,但是如果第二次点击
Button1
就应该撤销对
Button2
的更改,你不应该让代码改变
Button2
原来的样子吗?也许吧,但我不知道怎么做!嗯,我不能让它工作。我在现有代码之前和之后都尝试过它,然后将它放入自己的IF语句测试中,以查看Button2是否如您上面所建议的那样被启用,而ELSE是现有代码,当我单击按钮时,什么也没有发生。按钮文本不会更改,页面也不会刷新。我也按照你的建议重置了它的属性,以防万一,但这也不起作用。我编辑了我的主要帖子,以反映我所做的尝试。我成功了。那是因为我禁用了按钮。我一把它拿走,它就按预期工作了。因此,由于按钮被禁用,服务器忽略了对它的任何单击,而不考虑代码中的OnClick。谢谢你的帮助!
if(!Button2.Enabled)
{
    Timer1.Enabled = true;  // You might also have to reset its properties
    Button2.Text = "Disable automatic refresh";
    Button2.Font.Italic = false;
    Button2.Enabled = true;
}