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