2017-02-27 104 views
0

我有一个列表视图,我想每隔5秒更新一次,更新面板会刷新但不起作用。使用UpdatePanel刷新ListView在asp:webform

<asp:Timer runat="server" ID="UP_Timer" Interval="5000" /> 

<asp:UpdatePanel runat="server" ID="Proc_UpdatePanel"> 
    <ContentTemplate> 
     <asp:ListView ID="ListView1" runat="server" 
      DataKeyNames="procName" 
      ItemType="SerMon.RemoteProcess" SelectMethod="fetchFromQueue"> 
      <EmptyDataTemplate> 
       <table> 
        <tr> 
         <td>No data was returned.</td> 
        </tr> 
       </table> 
      </EmptyDataTemplate> 
      <EmptyItemTemplate> 
       <td /> 
      </EmptyItemTemplate> 
      <LayoutTemplate> 
       <table runat="server" id="table1" class="table table-striped table-hover "> 
        <thead> 
         <tr runat="server"> 
          <th>#</th> 
          <th>Process</th> 
          <th>Status</th> 
          <th>Machine</th> 
         </tr> 
         <tr id="itemPlaceholder" runat="server"></tr> 
        </thead> 
       </table> 
      </LayoutTemplate> 
      <ItemTemplate> 
       <tr runat="server"> 
        <td>1</td> 
        <td> 
         <asp:Label runat="server" ID="lblId"><%#: Item.ProcName%></asp:Label></td> 
        <td> 
         <asp:Label runat="server" ID="Label1"><%#: Item.Procstatus%></asp:Label></td> 
        <td> 
         <asp:Label runat="server" ID="Label2"><%#: Item.mcName%></asp:Label></td> 
       </tr> 
      </ItemTemplate> 
     </asp:ListView> 
    </ContentTemplate> 
</asp:UpdatePanel> 

整个页面刷新,但调用填充listview的方法不会被调用。我哪里错了?

+0

看到此

回答

0

这里有两个不同的问题。

首先Timer不在UpdatePanel,所以当然它会做一个完整的回发。移动UpdatePanel中的计时器。

其次,您没有为计时器指定OnTick事件。没有它,计时器将刷新页面。

<asp:UpdatePanel runat="server" ID="Proc_UpdatePanel"> 
    <ContentTemplate> 
     <asp:Timer runat="server" ID="UP_Timer" Interval="5000" OnTick="UP_Timer_Tick" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

代码后面:

protected void UP_Timer_Tick(object sender, EventArgs e) 
{ 
    //update the ListView 
}