大家好,所以我使用javascript每隔5秒自动更新一次页面...但是我注意到刷新工作但是它没有更新我的服务器端数据...所以数据网格应该更新它不是......但是如果我按f5然后数据更新......这里是我在标记中的javascript。
<script>
//refresh the page (without losing state)
window.setTimeout('document.forms[0].submit()', 5000);
</script>
(在头脑中)
page load
has all my data i need...
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (DDLProduct.Items.Count == 0)
{
BindDropDownList();
}
BizManager mgr = new BizManager();
mgr.CalcShiftPeriod();
//stores the bizmanager shiftstart to a backing field
_shiftStart = mgr.Shiftstart;
_shiftEnd = mgr.Shiftend;
#if DEBUG
//tests these values if program is in debug version.
_shiftStart = new DateTime(2013, 08, 27, 6, 00, 00);
//dismisses if in release version
_shiftEnd = new DateTime(2013, 08, 27, 13, 59, 59);
#endif
//passing in the params to the refreshdata method.
RefreshData(Product, _shiftStart, _shiftEnd);
}
}
所以本质上页面是刷新的,但除非我做f5刷新,否则数据不会。
答案 0 :(得分:4)
您实际上并未刷新页面,而是提交表单,从而创建回发。在Page_Load中,如果数据是回发,则不刷新数据。
尝试将javascript更改为:
<script>
window.setTimeout(function() {
location.reload();
}, 5000);
</script>
答案 1 :(得分:1)
我不知道你为什么要每5秒重新加载一次页面
Esko 的回答会对您有用,但您也可以通过使用此类Meta Refresh
来刷新
<head>
<meta http-equiv="refresh" content="10">
</head>
我建议你这样做:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<!-- your GridView in UpdatePanel -->
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
</asp:UpdatePanel>
<asp:Timer ID="Timer1" runat="server" Interval="2000" OnTick="Timer1_Tick"></asp:Timer>
后端代码:
protected void Timer1_Tick(object sender, EventArgs e)
{
// your code to refresh after some interval
}