问题描述
我有一个updatepanel
,里面有label
和datalist
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="2000" Enabled="True" ontick="Timer1_Tick"></asp:Timer>
Tick <asp:Label ID="LabelTick" runat="server" Text=""></asp:Label>
<asp:DataList ID="dl1" runat="server" DataSourceID="sqlDataSource1" RepeatColumns = "4" CellSpacing = "3" RepeatLayout = "Table">
<ItemTemplate>
...
</ItemTemplate>
</asp:DataList>
<asp:sqlDataSource ID="sqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" SelectCommand="SELECT ..."></asp:sqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
在后面的代码中,每次滴答之后我都会更新数据绑定:
Protected Sub Timer1_Tick(ByVal sender As Object,ByVal e As EventArgs) Handles Timer1.Tick
dl1.DataSourceID = sqlDataSource1.ID
dl1.DataBind()
LabelTick.Text = DateTime.Now.ToString()
End Sub
label
每2秒正确更新一次,这意味着计时器正确运行。但是DataList
不会刷新,它只会在页面加载后刷新一次。
为什么?
解决方法
在壁虱通话结束时:
UpdatePanel1.Update()