【发布时间】:2019-12-03 12:50:31
【问题描述】:
我已经在我的 ASP.Net gridview 上实现了自定义分页,但它不起作用。当我单击任何页码时,它会加载默认的第一页。我的 gridview 的数据源是一个 SharePoint 列表。我从 SharePoint 列表中获取项目并将其传递给 DataTable,然后将 DataTable 对象绑定到我的 gridview。
以下是我的代码供您参考:
<asp:GridView runat="server" ID="gvSupplierRequests" runat="server" AutoGenerateColumns="False"
OnRowDataBound="gvSupplierRequests_OnRowDataBound" BorderWidth="2px" GridLines="Both" Width="100%" OnPageIndexChanging="gvSupplierRequests_PageIndexChanging"
AllowPaging="true" AllowCustomPaging="true" AllowSorting="true" PagerStyle-CssClass="pagingDiv">
protected void BindSupplierRequests(string siteUrl)
{
try
{
using (SPSite site = new SPSite(siteUrl))
{
using (SPWeb web = site.OpenWeb())
{
SPList requestList = web.Lists.TryGetList(Constants.RequestListName);
DataTable dtRequests = new DataTable();
if (requestList != null)
{
SPQuery queryRequests = new SPQuery();
queryRequests.Query = "<Where><And><Eq><FieldRef Name='ITApproval'/><Value Type='Choice'>Approved</Value></Eq>" +
"<Eq><FieldRef Name='SupplierStatus'/><Value Type='Choice'>Pending</Value></Eq></And></Where>" +
"<OrderBy><FieldRef Name='RequestedDate' Ascending='True' /></OrderBy>";
SPListItemCollection spItemColl = requestList.GetItems(queryRequests);
dtRequests = requestList.GetItems(queryRequests).GetDataTable();
gvSupplierRequests.PageSize = 10;
gvSupplierRequests.VirtualItemCount = requestList.GetItems(queryRequests).Count;
gvSupplierRequests.DataSource = dtRequests;
gvSupplierRequests.DataBind();
}
}
}
}
catch (Exception ex)
{
SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("QF.IT.Form.DaasAndPaas", TraceSeverity.High, EventSeverity.Error), TraceSeverity.High, "BindSupplierRequests() " + " (general): \r\n\r\n>=message=> " + ex.Message + " \r\n\r\n>=stacktrace=> " + ex.StackTrace);
}
}
protected void gvSupplierRequests_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
try
{
gvSupplierRequests.PageIndex = e.NewPageIndex;
BindSupplierRequests(siteUrl);
}
catch (Exception ex)
{
SPDiagnosticsService.Local.WriteTrace(0, new SPDiagnosticsCategory("QF.IT.Form.DaasAndPaas", TraceSeverity.High, EventSeverity.Error), TraceSeverity.High, "gvSupplierRequests_PageIndexChanging() " + " (general): \r\n\r\n>=message=> " + ex.Message + " \r\n\r\n>=stacktrace=> " + ex.StackTrace);
}
}
【问题讨论】:
-
尝试从 gridview 设计中删除任何一个 AllowPaging="true" AllowCustomPaging="true"
-
我尝试了您的建议,但没有奏效。这两个属性都必须存在。如果删除 AllowPaging="true" 那么默认和自定义分页都会消失,如果我删除 AllowCustomPaging="true" 那么它会显示默认分页并隐藏我的自定义分页。
-
限制查询的部分在哪里? (不熟悉 SPQuery 所以请原谅我......)我在那里看不到它,但也许我错过了一些东西。你应该有一个开始和结束。
标签: asp.net gridview datatable sharepoint-2013 sharepoint-list