GridView不显示分页导航

时间:2016-06-17 23:33:18

标签: c# asp.net gridview

我有一个GridView控件,它使用数据表作为数据源。我已在控件上启用分页,GridView显示我已指定为PageSize的行数。但是,没有分页导航,所以我无法更改页面。

问题:如何显示分页导航?

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();

注意:我已在调试器中验证数据表dt的行数超过100行

OnPageIndexChanging()事件,基于this question的答案,虽然它在我的案例中没有用(我不确定为什么它是必要的,因为在您尝试转到下一页之前,事件不应该触发,这需要首先显示分页导航,对吗?):

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

我希望看到一些方法来浏览结果。

我还尝试向PagerSettings添加GridView,如下所示:

<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 个答案:

答案 0 :(得分:1)

经过多次敲击牙齿和咬牙切齿之后,我终于明白了这一点。

我有另一个操作<script type="text/javascript"> document.addEventListener("keydown", function (event) { console.log(event.code, event.ctrlKey); }); function buttonClick() { var e = new KeyboardEvent("keydown", { 'ctrlKey': true, 'which': 83, 'code': 83 }); document.dispatchEvent(e); } </script> <form id="form1" runat="server"> <div> <button ID="Button1" onclick="buttonClick();">Test</button> </div> </form> 的事件,它将特定列格式化为HTML,并且当在页脚行上操作时,此转​​换不会导致分页控件。

解决方案是在进行转换之前检查绑定行是否为DataRow。

OnRowDataBound()
然后幸福随之而来:

happiness