我有一个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();
}
我希望看到一些方法来浏览结果。
我还尝试向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没有隐藏任何分页控件。
答案 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()
然后幸福随之而来: