2

私はデータバインドを持っていますasp:GridView:

<asp:GridView ID="gridUsers" runat="server" ShowHeaderWhenEmpty="True" Width="100%" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
   <Columns>
       <asp:BoundField DataField="UserGUID" HeaderText="UserGUID" SortExpression="UserGUID" Visible="False" />
       <asp:HyperLinkField DataNavigateUrlFields="UserGUID" DataNavigateUrlFormatString="~\UserManagement\UserProperties.aspx?userGuid={0}" DataTextField="Username" HeaderText="User name" SortExpression="Username" />
       <asp:BoundField DataField="Fullname" HeaderText="Full name" SortExpression="Fullname" />
       <asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description"/>
       <asp:BoundField DataField="Email" HeaderText="E-mail" SortExpression="Email"/>
       <asp:BoundField DataField="IsActive" HeaderText="Active" SortExpression="IsActive" Visible="False" />
       <asp:BoundField DataField="AuthenticationType" HeaderText="Account type" SortExpression="AuthenticationType" />
    </Columns>
</asp:GridView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:db %>"
    SelectCommand="SELECT UserGUID, Username, Fullname, Description, Email, IsActive, AuthenticationType FROM Users WHERE IsActive = 1 ORDER BY Username">
</asp:SqlDataSource>

対応するコード ビハインドを使用:

public partial class FooItToHoo : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

ページを参照すると、グリッドが正しく表示されます。

しかし、戻って次に進む(または別のページに移動して戻る)と、グリッドは空です:

F5 キーを押すと、ページが更新され、グリッドが表示され、入力されます。

私は何を間違っていますか?


更新: 私のページの最初のリクエストはキャッシュされません。サーバーからの応答は次のとおりです。

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Wed, 13 Jun 2012 13:16:32 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 53219
Connection: Close

asp:GridViewコンテンツが提供された html でレンダリングさている場合:

離れてからBackに移動すると、サーバー要求は行われません。そのため、ページはキャッシュから提供する必要があります。

レンダリングされたページにコンテンツが含まれているが、「キャッシュされた」ページには含まれていないという ASP.net の処理は何ですか?

4

2 に答える 2

0

これはキャッシュの問題のようです。ブラウザからキャッシュを削除し、ページで以下のコードを使用して、ページがキャッシュされないようにします。

メタタグ:

 <meta http-equiv="Expires" CONTENT="0">
 <meta http-equiv="Cache-Control" CONTENT="no-cache">
 <meta http-equiv="Pragma" CONTENT="no-cache">

そしてコード:

Response.ExpiresAbsolute = DateTime.Now;
Response.Expires = -1441;
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma", "no-cache");
Response.AddHeader("Pragma", "no-store");
Response.AddHeader("cache-control", "no-cache");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoServerCaching();
于 2012-09-25T10:40:21.207 に答える
0

グリッドが空として表示される理由は、[次へ] ボタンをクリックすると、グリッドにバインドできるデータ ソースがないためです。したがって、これには次のことが必要です

グリッドビューを選択 - >プロパティウィンドウに移動 - >イベントボタンをクリック

pageindexchangeing イベントをダブルクリック

そしてセット

Allowpaging=trueグリッドビュー用

pageindex 変更イベントで、次のコードを記述します

gridview1.pageindex=e.newpageindex;
//gridbindingcode

gridview1.databind();
于 2012-09-24T12:10:56.053 に答える