0

c# のデータセットに select * クエリをキャッシュしました。

私のページには3つのドロップダウンリストがあります。選択したドロップダウンリストに応じて、データテーブルをフィルタリングし、グリッドビューにバインドします。ドロップダウンリストのデータが変更されるたびに、それに応じてデータを表示します。

私の問題は、クエリごとに500を超える結果があるため、このグリッドビューにページネーションを追加したことです。ページネーションしようとすると、グリッドビューが消えます。ドロップダウンリストの値は変わりません。

私は何をすべきか?

gridviewのページインデックス変更のコードは次のとおりです。

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

事前に助けてくれてありがとう。

4

2 に答える 2

1

以下は、あなたを助けるかもしれないステップです...

  1. 動的グリッドビュー コントロールをページに追加するか、ページに表示したいその他のコントロールに追加します。
  2. PageIndexChangingイベントハンドラーとともにページャー設定を設定します
  3. OnInit代わりにイベントで呼び出しますPage_Load

以下はサンプルコードです。

private void AddGridDynamically() 
{
    try
    {
        HtmlTableRow tr = new HtmlTableRow();
        HtmlTableCell td = new HtmlTableCell();
        GridView gv = new GridView();                                
            gv.AllowPaging = true;
            gv.PageSize = 20;
            gv.PagerSettings.Visible = true;
            gv.PagerSettings.Mode = PagerButtons.NumericFirstLast;
            gv.PageIndexChanging += new GridViewPageEventHandler(gv_PageIndexChanging);

        FillGrid(gv);

        td.Controls.Add(gv);
        tr.Cells.Add(td);
        tbl1.Rows.Add(tr);

        gv.EmptyDataText="No Data Found";
        gv.DataBind();        
    }
    catch (Exception ex)
    {
        throw ex;
    }       
}

private void FillGrid(GridView gv)
{
    try
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Name");
        dt.Columns.Add("Id");
        DataRow dr;
        for (int i = 0; i < 100; i++)
        {
            dr = dt.NewRow();
            dr[0] = "AnyThing" + i;
            dr[1] = i;
            dt.Rows.Add(dr);

        }
        gv.DataSource = dt;          
    }
    catch (Exception ex)
    { 
    }
}

protected override void OnInit(EventArgs e)
{
    AddGridDynamically();
}
于 2014-03-01T20:06:27.063 に答える