C# 如何使用PagedDataSource获取当前页面?

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">

我正在使用Umbraco CMS,并尝试使用“下一步”和“上一步”按钮在页面/节点集合中滚动。我已成功获取正确的总页数,但CurrentPageIndex始终显示为0,如何获取页面在由我的PagedDataSource创建的列表中的位置的CurrentPageIndex,并递增/递减以移动到下一页

到目前为止,我得到的代码是:

Asp.Net:

<div class="detail-paging">
<div class="list-paging-control">

    <p><asp:HyperLink runat="server" id="lnkFirstPage">&lt;&lt;</asp:HyperLink></p>

    <p><asp:HyperLink runat="server" id="lnkPrev" OnServerClick="lnkPrev_Click">&lt;</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">&gt;</asp:HyperLink></p>

    <p><asp:HyperLink runat="server" id="lnkLastPage">&gt;&gt;</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();
}