GridViewと検索とページングのための簡単なコントロールを備えた基本的なasp.netページを作成しました。 「次のページ」ボタンをクリックすると、出力が以前のポストバックとまったく同じになることがあります。ASP.NETはランダムにキャッシュ出力を出力します
この現象は、通常のポストバックとajaxポストバックを使用して検出されました。そして、私はFiddlerを使って、出力をキャッシュするブラウザではないことを確認しました。
そして、私はoutputcacheディレクティブを使用していません。
例: 開いているページが、それはまだページ1クリックだ、「次へ」をクリックし「次へ」を再度、今では、時にはそれが時々ない、正常に動作し、それは完全にランダムで3ページ
です。誰もがこの動作を引き起こす可能性があることを知っていますか?
ASPXページ:
<asp:Panel ID="PanelSearch" runat="server" GroupingText="Search Result" HorizontalAlign="Left"
Width="100%" Style="clear: both">
<uc1:dashboard_search ID="Dashboard_search1" runat="server" OnOnNeedSubs="Dashboard_search1_OnNeedSubs" /><br />
<asp:Button ID="btnBack" runat="server" Text="Previous page" Visible="false"
onclick="btnBack_Click" />
<asp:Label ID="lblPageNumber" runat="server"></asp:Label>
<asp:Button ID="btnNext"
runat="server" Text="Next Page" Visible="false"
onclick="btnNext_Click"/>
<asp:HiddenField ID="hidPageNumber" runat="server" Value="0" />
</asp:Panel>
このコードは、UpdatePanelの内部にある(ただし、UpdatePanelのせずに、それはまだ同じことを発生します)。
これは、コードの背後にあるコードは次のとおりです。
public void Dashboard_search1_OnNeedSubs(object sender, SubSSDEventArgs e)
{
e.SubSSDs = doSearch();
}
protected List<SubSSD> doSearch()
{
// [filter code]
int total = SubSSD.getTotalNumber();
int page = Convert.ToInt32(hidPageNumber.Value);
if (page == 0)
btnBack.Visible = false;
else
btnBack.Visible = true;
if (page + 26 >= total)
btnNext.Visible = false;
else
btnNext.Visible = true;
lblPageNumber.Text = "Page " + Convert.ToInt32((page/25) + 1) + "/" + Convert.ToInt32((total/25) + 1);
List<SubSSD> subssds = SubSSD.search(page, page + 26);
return subssds;
}
protected void btnBack_Click(object sender, EventArgs e)
{
int page = Convert.ToInt32(hidPageNumber.Value);
hidPageNumber.Value = Convert.ToString(page - 25);
}
protected void btnNext_Click(object sender, EventArgs e)
{
int page = Convert.ToInt32(hidPageNumber.Value);
hidPageNumber.Value = Convert.ToString(page + 25);
}
いくつかのコードを投稿できますか?どこからデータを取得してグリッドにバインドするかは、ページ上のグリッド定義と同様に役立ちます。 –