仅刷新 asp.net 网站中的指定位置(更新代码)不起作用
我想每 5 秒加载一次页面,所以我的头部内容中有这个,
<meta http-equiv="refresh" content="5" />
因此整个页面都会刷新。我只想刷新页面中的网格视图和图表。我怎样才能做到这一点而不刷新整个页面。
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" EnablePageMethods="true" EnablePartialRendering="True"
runat="server">
</asp:ToolkitScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div id="pie">
<canvas width="125" height="450" id="progress1">[No canvas support]</canvas>
<canvas id="pie1" position="relative" width="400" height="400">[No canvas support]</canvas>
</div>
<asp:Panel runat="server" ID="Panel_Users">
<asp:GridView ID="Grid_UserTable" runat="server"
OnRowDataBound="MyGrid_RowDataBound">
<Columns> </Columns>
</asp:GridView>
</asp:Panel>
<asp:Timer ID="TimerClickEvent" runat="server" Interval="4000" ontick="TimerClickEvent_Tick"></asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>
protected DateTime LastUpdate
{
get
{
return (DateTime)(ViewState["LastUpdate"] ?? DateTime.Now);
}
set
{
ViewState["LastUpdate"] = value;
}
}
protected void TimerClickEvent_Tick(object sender, EventArgs e)
{
if (LastUpdate.AddSeconds(5.0) < DateTime.Now)
{
UpdatePanel1.Update();
LastUpdate = DateTime.Now;
}
}
protected void Page_Load(object sender, EventArgs e)
{
ToolkitScriptManager1.RegisterAsyncPostBackControl(TimerClickEvent);
if (!IsPostBack)
{
LastUpdate = DateTime.Now;
}}
不重新加载。我哪里出错了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将面板放置在 UpdatePanel 中,并使用方法 updatePanelID.Update() 来更新包含 GridView 的面板。请参阅了解更多详细信息
而不是按钮单击事件,您可以使用计时器。
Place the panel inside an UpdatePanel and use method updatePanelID.Update() to update the update the Panel containing GridView. See this for more details
Instead of button click event you can use a timer for that.
如果您只想刷新一个区域,有 2 个选项:
中,并让它执行所需的操作(通过
< 内文档上的元刷新) ;iframe>
.load()
方法,即$('#id').load(url);
上的元刷新整个页面将根据需要重新加载整个页面。
If you only want to refresh a region, there are 2 options:
<iframe>
and let it do whatever it wants (via meta-refresh on the document inside the<iframe>
.load()
method, i.e.$('#id').load(url);
A meta-refresh on the entire page will, by necessity, reload the entire page.
对于内置的 asp.net 解决方案,请使用
以及
控件。将更新面板设置为根据计时器滴答事件进行更新。这将仅更新更新面板中的内容。
然而,这是一个快速而肮脏的解决方案(在我看来),因为即使页面上的内容仅在更新面板内更新,整个页面实际上每次都会被回发,并且
Page_Load
方法将被再次处理。另一种解决方案是使用一些 javascript ajax,并且只更新您需要更新的内容。 jQuery 是一个很棒的 javascript 库,可以帮助您完成此任务,然后使用它的 AJAX 功能。这将允许您重新加载您需要的区域,并让您更好地控制正在发生的事情。
我会忘记 AJAX 控制工具包,而更多地关注 jQuery Ajax 和 jQuery UI。
For a built in asp.net solution, use an
<asp:UpdatePanel>
along with an<asp:Timer>
control.Set the update panel to update based on the Timers Tick event. This will then only update the content within the update panel.
HOWEVER, this is a quick and dirty solution (in my opinion) because even though the content on the page only updates within the update panel, the whole page is actually posted back each time, and anything within the
Page_Load
method will be processed again.Another solution would be to use some javascript ajax, and only update what you need to update. A great javascript library which will help you with this is jQuery, and then use the AJAX features of this. This will allow you to reload on the areas that you need, and give you far greater control over what is happening.
I would forget about the AJAX Control Toolkit, and look more into jQuery Ajax and jQuery UI.