0

私はC#、.NET3.5を使用しています。動的にバインドされたDataSourceを持つGridViewコントロールがあり、Page_Loadイベントハンドラーで動的にPageSizeを設定します。コントロールでAllowPaging=trueを設定しました。GridViewページングは​​正常に機能していますが、Page_Loadで設定されたページサイズは、ページが最初に読み込まれたときに有効になりません。ページが初めて読み込まれるとき、設定したGridView.PageSizeプロパティ(5、15など)に関係なく、常に10行が表示されます。1回目(ページポストバック)以降、ページサイズが有効になり、すべてが期待どおりに機能します。

ページサイズは、appsettingsの下のweb.Configファイルから取得したマスターページのプロパティです。

gridViewのページサイズが初めて有効にならない理由がわかりません。Page_Load以外の別のイベントでページサイズを設定する必要があります。また、ポストバックであっても、常に設定しています。内部Webサーバーを使用してページを実行しています。何が起こっているのか考えていますか?

コードビハインド(GridView1.AllowPaging = aspxページではtrue):

  protected void Page_Load(object sender, System.EventArgs e)
  {
                        DataView dvMembers = GetMembers;

                        GridView1.DataSource = dvMembers;   
                        GridView1.PageSize = Master.GridViewSize;
  }

マスターページのプロパティ:

public int GridViewSize
    {
        get { return Convert.ToInt32 
                (ConfigurationManager.AppSettings ["memberDataGridPageSize"]); } 
    }
4

3 に答える 3

2

子ページのPageLoadイベントは、マスターページのPageLoadイベントの前に呼び出されます。したがって、Master.GridViewSizeマスターページのPageLoadイベントで設定している場合は、2番目のPostBackまで設定されません。

ページのライフサイクルの早い段階でGridViewSizeをロードしてから、セッションに保存することをお勧めします。

于 2009-10-21T16:59:53.390 に答える
0

Pagesizeを設定した後、PageBindメソッドがありませんでした。それを追加すると、すべて正常に機能します。PageSizeを設定する前にコントロールをバインドしていましたが、値は1回目以降に保存され、その後Postbackで使用されていたと思いますが、初めてではありません。

それを指摘してくれたJasonBerkanに感謝します。

于 2009-10-21T20:14:16.677 に答える
0

GridViewのページング定義では、最初のデータバインディングに設定されていますが、ポストバックが発生した場合は2番目に設定されていません(デフォルトではページングは​​ありません)aspxページでGridViewのページングを設定する必要があります。

このようにしてみてください

<asp:GridView ID="GridView1" PageSize='<%$ AppSettings:memberDataGridPageSize %>' ..>

また、ASP.NET 3.5プロジェクトを実行している場合は、GridViewを拡張してコントロールを使用できることも知っておいてください。ここDataPagerに、MattBersethが開発した例があります。

于 2009-10-21T17:30:31.270 に答える