C# 如何使用PagedDataSource获取当前页面?
我正在使用Umbraco CMS,并尝试使用“下一步”和“上一步”按钮在页面/节点集合中滚动。我已成功获取正确的总页数,但CurrentPageIndex始终显示为0,如何获取页面在由我的PagedDataSource创建的列表中的位置的CurrentPageIndex,并递增/递减以移动到下一页 到目前为止,我得到的代码是: Asp.Net:C# 如何使用PagedDataSource获取当前页面?,c#,asp.net,umbraco,C#,Asp.net,Umbraco,我正在使用Umbraco CMS,并尝试使用“下一步”和“上一步”按钮在页面/节点集合中滚动。我已成功获取正确的总页数,但CurrentPageIndex始终显示为0,如何获取页面在由我的PagedDataSource创建的列表中的位置的CurrentPageIndex,并递增/递减以移动到下一页 到目前为止,我得到的代码是: Asp.Net: <div class="detail-paging"> <div class="list-paging-control">
<div class="detail-paging">
<div class="list-paging-control">
<p><asp:HyperLink runat="server" id="lnkFirstPage"><<</asp:HyperLink></p>
<p><asp:HyperLink runat="server" id="lnkPrev" OnServerClick="lnkPrev_Click"><</asp:HyperLink></p>
</div>
<div class="list-paging-numbers">
<p><asp:Label runat="server" ID="lblCurrentScroll"></asp:Label></p>
</div>
<div class="list-paging-control left-marker">
<p><asp:HyperLink runat="server" id="lnkNext" OnServerClick="lnkNext_Click">></asp:HyperLink></p>
<p><asp:HyperLink runat="server" id="lnkLastPage">>></asp:HyperLink></p>
</div>
<div class="list-paging-text">
<p><asp:HyperLink runat="server" ID="lnkViewAll" OnClick="ViewAll_Click">View All</asp:HyperLink></p>
</div>
查看所有
C#:
专用页面数据源页面;
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
DoDataBind();
}
}
公共整数页码
{
得到
{
如果(ViewState[“PageNumber”]!=null)
返回Convert.ToInt32(视图状态[“页码]);
其他的
返回0;
}
设置
{
ViewState[“PageNumber”]=值;
}
}
//绑定来自UMBRACO的数据的所有代码
公共无效DoDataBind()
{
//获取父节点。
节点父节点=新节点(1152);
//获取所有BrandsDetailPage子项并按字母顺序排列。
IEnumerable nodes=HelperMethods.GetChildrenOfType(父级,“BrandsDetailPage”,true,true).OrderBy(n=>n.Name);
//分页
分页=新的PagedDataSource()
{
AllowPaging=true,
DataSource=nodes.ToList(),
CurrentPageIndex=页码,
PageSize=1
};
//pageNumber=paging.CurrentPageIndex;
CreateNavigation();
}
//绑定来自UMBRACO的数据的所有代码
//分页
public void CreateNavigation()
{
lblCurrentScroll.Text=PageNumber.ToString();
lblCurrentScroll.Text+=“of”;
lblCurrentScroll.Text+=paging.PageCount;
节点=新节点(1153);
字符串nodeUrl=node.Url;
lnkViewAll.NavigateUrl=string.Format(“{0}?page=All”,nodeUrl);
}
受保护的无效lnkPrev_单击(对象发送方,事件参数e)
{
页码--;
DoDataBind();
}
受保护的void lnkNext\u单击(对象发送方,事件参数e)
{
页码++;
DoDataBind();
}
尝试使用作为一个很好的示例
我在我的Umbraco项目中多次成功地使用了它。如果需要,还可以覆盖Datapager的一些标准功能。您应该使用类似以下内容获取所需的信息dataSource.PageSize=PageSize;dataSource.CurrentPageIndex=pageNo??0;代码>为什么要将页面大小设置为1。。?
private PagedDataSource paging;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DoDataBind();
}
}
public int PageNumber
{
get
{
if (ViewState["PageNumber"] != null)
return Convert.ToInt32(ViewState["PageNumber"]);
else
return 0;
}
set
{
ViewState["PageNumber"] = value;
}
}
//ALL CODE THAT BINDS DATA FROM UMBRACO
public void DoDataBind()
{
//Get the parent node.
Node parent = new Node(1152);
//Get all the BrandsDetailPage children and order alphabetically.
IEnumerable<INode> nodes = HelperMethods.GetChildrenOfType(parent, "BrandsDetailPage", true, true).OrderBy(n => n.Name);
//Pagination
paging = new PagedDataSource()
{
AllowPaging = true,
DataSource = nodes.ToList(),
CurrentPageIndex = PageNumber,
PageSize = 1
};
//pageNumber = paging.CurrentPageIndex;
CreateNavigation();
}
//ALL CODE THAT BINDS DATA FROM UMBRACO
//PAGINATION
public void CreateNavigation()
{
lblCurrentScroll.Text = PageNumber.ToString();
lblCurrentScroll.Text += " of ";
lblCurrentScroll.Text += paging.PageCount;
Node node = new Node(1153);
string nodeUrl = node.Url;
lnkViewAll.NavigateUrl = string.Format("{0}?page=All", nodeUrl);
}
protected void lnkPrev_Click(object sender, EventArgs e)
{
PageNumber--;
DoDataBind();
}
protected void lnkNext_Click(object sender, EventArgs e)
{
PageNumber++;
DoDataBind();
}