Web 应用程序在刷新时不会更新
本文关键字:更新 刷新 应用程序 Web | 更新日期: 2023-09-27 18:33:26
我有一个ASP .NET Web应用程序,它使用ListView Control查询和显示数据库中的数据。当我在浏览器上运行 Web 应用程序时,它工作正常,但是当我在数据库中删除或添加某些内容,然后刷新运行 Web 应用程序的浏览器时,其输出不会更新。如何在刷新时更新我的 Web 应用?
这是列表视图的代码:
<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource">
<ItemTemplate>
<tr style="">
<td>
<asp:Label ID="HotfixIDLabel" runat="server" Text='<%# Eval("HotfixID") %>' />
</td>
<td>
<asp:Label ID="DescriptionLabel" runat="server"
Text='<%# Eval("Description") %>' />
</td>
<td>
<asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr style="">
<td>
<asp:Label ID="HotfixIDLabel" runat="server" Text='<%# Eval("HotfixID") %>' />
</td>
<td>
<asp:Label ID="DescriptionLabel" runat="server"
Text='<%# Eval("Description") %>' />
</td>
<td>
<asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
</td>
</tr>
</AlternatingItemTemplate>
<EmptyDataTemplate>
<table runat="server" style="">
<tr>
<td>
No data was returned.</td>
</tr>
</table>
</EmptyDataTemplate>
<InsertItemTemplate>
<tr style="">
<td>
<asp:Button ID="InsertButton" runat="server" CommandName="Insert"
Text="Insert" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel"
Text="Clear" />
</td>
<td>
<asp:TextBox ID="HotfixIDTextBox" runat="server"
Text='<%# Bind("HotfixID") %>' />
</td>
<td>
<asp:TextBox ID="DescriptionTextBox" runat="server"
Text='<%# Bind("Description") %>' />
</td>
<td>
<asp:TextBox ID="DateTextBox" runat="server" Text='<%# Bind("Date") %>' />
</td>
</tr>
</InsertItemTemplate>
<LayoutTemplate>
<table runat="server" border="0">
<tr runat="server">
<td runat="server">
<table ID="itemPlaceholderContainer" runat="server" style="">
<tr runat="server" style="">
<th id="Th1" runat="server" align="left">
<asp:LinkButton ID="LinkButton0" runat="server" CommandName="Sort" CommandArgument="HotfixID" Width="140">Update ID</asp:LinkButton></th>
<th id="Th2" runat="server">
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Sort" CommandArgument="Description" Width="600">Description</asp:LinkButton> </th>
<th id="Th3" runat="server">
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Sort" CommandArgument="Date" Width="100">Date</asp:LinkButton> </th>
</tr>
<tr ID="itemPlaceholder" runat="server">
</tr>
</table>
</td>
</tr>
<tr runat="server">
<td runat="server" style="">
</td>
</tr>
</table>
</LayoutTemplate>
<EditItemTemplate>
<tr style="">
<td>
<asp:Button ID="UpdateButton" runat="server" CommandName="Update"
Text="Update" />
<asp:Button ID="CancelButton" runat="server" CommandName="Cancel"
Text="Cancel" />
</td>
<td>
<asp:TextBox ID="HotfixIDTextBox" runat="server"
Text='<%# Bind("HotfixID") %>' />
</td>
<td>
<asp:TextBox ID="DescriptionTextBox" runat="server"
Text='<%# Bind("Description") %>' />
</td>
<td>
<asp:TextBox ID="DateTextBox" runat="server" Text='<%# Bind("Date") %>' />
</td>
</tr>
</EditItemTemplate>
<SelectedItemTemplate>
<tr style="">
<td>
<asp:Label ID="HotfixIDLabel" runat="server" Text='<%# Eval("HotfixID") %>' />
</td>
<td>
<asp:Label ID="DescriptionLabel" runat="server"
Text='<%# Eval("Description") %>' />
</td>
<td>
<asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' />
</td>
</tr>
</SelectedItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SPDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:addremovefinalConnectionString %>"
SelectCommand="sp_getupdatesSP_v3" SelectCommandType="StoredProcedure"
onselecting="SPDataSource_Selecting">
<SelectParameters>
<asp:ControlParameter ControlID="ComboBox1" Name="param"
PropertyName="SelectedValue" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
好吧,正如评论所暗示的那样,显然该页面正在被缓存。 您可以通过在页面顶部添加指令来验证这一点:
<%@ OutputCache Location="None" %>
这意味着您的数据库将针对每个请求命中。 为了获得更好的解决方案,我建议查看SQL缓存依赖项。
在查询
数据库时,您不是手动刷新页面,而是使用服务器端按钮刷新数据,该按钮会导致回发和刷新数据,因此它不会用户缓存数据。
而 Afer 更新数据库时您说您正在手动刷新页面,这可能是您获得缓存数据的原因。
我的建议是在更新数据库后从服务器端再次加载页面(使用新数据重新绑定控件)。