0

ページング機能を備えたグリッドビューがあります。DB内のアイテムを検索して結果をページング付きのグリッドビューに表示したいのですが、別のページにジャンプすると、グリッドビューはすべてのページを含むDB内のすべてのアイテムをバインドして一覧表示します。この問題を解決するにはどうすればよいですか?あなたのアドバイスに感謝します

 protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        BindGridView();
    }
}

private void BindGridView()
{
    using (NoavaranModel.NoavaranEntities1 dbContext = new NoavaranModel.NoavaranEntities1())
    {
        var query = from list in dbContext.Students
                    select list;
        lblStudentsCount.Text = query.Count().ToString();
        GridView1.DataSource = query;
        GridView1.DataBind();
    }
}

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    BindGridView();
    GridView1.DataBind();
}
4

1 に答える 1

0

私が正しく理解している場合は、BindGridView()メソッドの最後でGridView1.DataBind()を呼び出しているので、BindGridView()を呼び出した後に再度呼び出す必要はないと思います。PageIndexChangingイベントで:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    BindGridView();
}

それでも解決しない場合は、コメントで何が起こっているのか教えてください。もう一度見ていきます。

また、GridViewがデータベースのすべてのアイテムでいっぱいになっていると言っている場合(特定のアイテムのみを期待している場合)、クエリに問題があることを示しています。ブレークポイントを設定し、クエリをステップ実行して、何が戻ってくるかを確認し、期待どおりの結果が得られることを確認します。

于 2012-10-15T05:44:29.427 に答える