0

ListViewControlを使用してデータベースからのデータをクエリして表示するASP.NETWebアプリケーションがあります。ブラウザでWebアプリを実行すると正常に動作しますが、データベース内の何かを削除または追加してから、Webアプリが実行されているブラウザを更新すると、出力が更新されません。更新時にWebアプリを更新するにはどうすればよいですか?

これはListViewのコードです:

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

2 に答える 2

3

コメントがほのめかしたように、ページがキャッシュされていることは明らかです。これを確認するには、ページの上部にディレクティブを追加します。

<%@ OutputCache Location="None" %>

ただし、これは、すべてのリクエストでデータベースがヒットすることを意味します。より良い解決策として、 SQL キャッシュの依存関係を調べることをお勧めします。

于 2012-05-07T07:32:18.637 に答える
0

データベースのクエリを実行しているときに、ページを手動で更新するのではなく、サーバー側のボタンを使用してポストバックを発生させ、データを更新するため、ユーザーはデータをキャッシュしません。

データベースを更新した後、ページを手動で更新していると言いましたが、これがキャッシュされたデータを取得している理由である可能性があります。

私の提案は、データベースを更新した後、サーバー側からページを再度ロードする (新しいデータでコントロールを再バインドする) ことです。

于 2012-05-07T08:56:25.150 に答える