转发器中的自定义分页

时间:2014-01-24 07:13:34

标签: c# asp.net sorting repeater

我正在尝试在转发器中应用自定义分页,但它确实有效。但是当只有两三个记录时,它会在底部显示数字。

我想要的是,当有至少8到10个记录时,那么数字应该显示在底部,如1,2,3 ..我在图像中通过红色方块表示....这里是图像。 pic

以下是代码:

protected void BindRepeater()
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["mydms"].ConnectionString.ToString());
    SqlCommand cmd = new SqlCommand("sphrdoc2", con);

    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.AddWithValue("@UserID", Convert.ToInt32(Session["UserID"]));

    if (con.State == ConnectionState.Closed)
    {
        con.Open();
    }
    DataTable dt = new DataTable();
    SqlDataAdapter adp = new SqlDataAdapter(cmd);
    adp.Fill(dt);
    PagedDataSource pgitems = new PagedDataSource();
    DataView dv = new DataView(dt);
    pgitems.DataSource = dv;
    pgitems.AllowPaging = true;
    pgitems.PageSize = 2;
    pgitems.CurrentPageIndex = PageNumber;
    if (pgitems.PageCount > 1)
    {
        rptPaging.Visible = true;
        ArrayList pages = new ArrayList();
        for (int i = 0; i < pgitems.PageCount; i++)
            pages.Add((i + 1).ToString());
        rptPaging.DataSource = pages;
        rptPaging.DataBind();
    }
    else
    {
        rptPaging.Visible = false;
    }
    Repeater1.DataSource = pgitems;
    Repeater1.DataBind();
}

public int PageNumber
{
    get
    {
        if (ViewState["PageNumber"] != null)
            return Convert.ToInt32(ViewState["PageNumber"]);
        else
            return 0;
    }
    set
    {
        ViewState["PageNumber"] = value;
    }
}
protected void rptPaging_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    PageNumber = Convert.ToInt32(e.CommandArgument) - 1;
    BindRepeater();
}

这是html

<asp:Repeater ID="rptPaging" runat="server" onitemcommand="rptPaging_ItemCommand">
    <ItemTemplate>
        <asp:LinkButton ID="btnPage" style="padding:8px; margin:2px; background:#20B2AA; border:solid 1px #666; font:8pt tahoma;" CommandName="Page" CommandArgument="<%# Container.DataItem %>" runat="server" ForeColor="White" Font-Bold="True"><%# Container.DataItem %>
        </asp:LinkButton>
    </ItemTemplate>
</asp:Repeater>

1 个答案:

答案 0 :(得分:1)

添加条件检查数据视图中没有行计数。

        DataView dv = new DataView(dt);
        if{dv.Table.Rows.Count > 10)
        {
             PagedDataSource pgitems = new PagedDataSource();
             pgitems.DataSource = dv;
             pgitems.AllowPaging = true;
             pgitems.PageSize = 2;
             pgitems.CurrentPageIndex = PageNumber;               
             rptPaging.Visible = true;
             ArrayList pages = new ArrayList();
             for (int i = 0; i < pgitems.PageCount; i++)
                   pages.Add((i + 1).ToString());
             rptPaging.DataSource = pages;
             rptPaging.DataBind();


        }
        else
        {
            rptPaging.Visible = false;
        }