2016-06-17 14 views
1

データソースにデータテーブルを使用するGridViewコントロールがあります。コントロールのページングを有効にしました。GridViewには、指定した行の数がPageSizeとして表示されます。しかし、ページングのナビゲーションがないので、私はページを変更する方法がありません。GridViewにページングナビゲーションが表示されない

質問:ページングナビゲーションを表示するにはどうすればよいですか?

GridView定義:

<asp:GridView runat="server" ID="gvResults" CssClass="report" DataKeyNames="LogId" AllowSorting="True" AllowPaging="True" PageSize="5" OnRowDataBound="gvResults_OnRowDataBound" OnPageIndexChanging="gvResults_OnPageIndexChanging"></asp:GridView> 

のC#:

//...stuff that gets data from database 
DataTable dt = oDs.DataSet.Tables[0]; 
gvResults.DataSource = dt; 
gvResults.DataBind(); 

注:私は、DataTableのdtがベースの、100以上の行

そしてOnPageIndexChanging()イベントを有しているデバッガで確認しましたthis questionの答えでは、私のケースでは機能しませんでしたが(私はなぜそれが必要なのか分からないあなたは右、最初の場所に表示するページングナビゲーションを必要とする次のページへ行くしようとするまでldn'tトリガ):?ここ

protected void gvResults_OnPageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView gv = (GridView)sender; 
    DataView dv = gv.DataSource as DataView; 
    if (dv != null) 
    { 
     DataTable dt = dv.Table; 

     gv.DataSource = dt; 
    } 
    gv.PageIndex = e.NewPageIndex; 
    gv.DataBind(); 
} 

は、私が見たものである。 results

私は結果をページするための何らかの方法を見ています。

そうように私も、私のGridViewPagerSettingsを追加しようとしている:ここで

<asp:GridView runat="server" ID="gvResults" CssClass="report" DataKeyNames="LogId" AllowSorting="True" AllowPaging="True" PageSize="5" OnRowDataBound="gvResults_OnRowDataBound" OnPageIndexChanging="gvResults_OnPageIndexChanging"> 
    <PagerSettings Mode="NextPreviousFirstLast" FirstPageText="First" LastPageText="Last" NextPageText="Next" PreviousPageText="Previous" Position="Bottom"></PagerSettings> 
</asp:GridView> 

がレンダリングされたHTMLは、その最後の行のように見えるものです。ランタイム中にcssを変更して行を展開し、行が空であることを確認しました。 CSSによって隠されているページングコントロールはありません。

html rendering

+1

チェックHTMLレンダリングコードは、おそらくいくつかのCSSはそれ – Aristos

+0

@Aristosを隠している - 私は、レンダリングされたHTMLのスクリーンショットで私の質問を更新しました。行の中には、ページング制御を持つべきものは何もありません。 –

答えて

1

ヘッドと歯ぎしりの多く叩いた後、私は最終的にこれを考え出しました。

特定の列をHTMLにフォーマットするOnRowDataBound()を操作する別のイベントがあり、この変換によってフッター行を操作したときにページングコントロールが発生しませんでした。

解決策は、変換を行う前に、バインドされた行がDataRowであることを確認することでした。

protected void gvResults_OnRowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (!(sender is GridView) || e.Row.RowType != DataControlRowType.DataRow) return; 

    //do stuff 
} 

そして幸せが続いた:

happiness

関連する問題