使用UpdatePanel刷新asp:webform中的ListView

时间:2017-02-27 11:07:47

标签: c# asp.net listview webforms updatepanel

我有一个列表视图,我想每5秒左右更新一次,更新面板会刷新但不起作用。

<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>

整个页面刷新,但不会调用要填充列表视图的方法。我哪里错了?

1 个答案:

答案 0 :(得分:0)

这里有两个不同的问题。

首先TimerUpdatePanel之外,所以当然它会完整的PostBack。将计时器移动到UpdatePanel内。

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

<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
}